generated from westfarn/web_django_template
CI / test (pull_request) Successful in 35s
Shoppers can register, save shipping details, and view order history while cards stay on Stripe. EasyPost tracker updates (including numbers from Pirate Ship) and 1–5 star reviews are limited to buyers. The contact form now only asks for email and a message.
51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
from decimal import Decimal
|
|
|
|
from django.contrib.auth import get_user_model
|
|
from django.test import Client, TestCase
|
|
from django.urls import reverse
|
|
|
|
from contacts.models import Contact
|
|
from payments.models import Invoice
|
|
from payments.services import next_invoice_number
|
|
|
|
|
|
class PaymentsPortalTests(TestCase):
|
|
def setUp(self):
|
|
User = get_user_model()
|
|
self.user = User.objects.create_user("biller", password="test-pass-123", is_staff=True)
|
|
self.client = Client()
|
|
self.client.login(username="biller", password="test-pass-123")
|
|
self.contact = Contact.objects.create(
|
|
email="pay@example.com", first_name="Pat", last_name="Lee"
|
|
)
|
|
|
|
def test_list_requires_login(self):
|
|
anon = Client()
|
|
self.assertEqual(anon.get(reverse("payments:invoice_list")).status_code, 302)
|
|
|
|
def test_create_draft_invoice(self):
|
|
response = self.client.post(
|
|
reverse("payments:invoice_create"),
|
|
{
|
|
"contact": str(self.contact.pk),
|
|
"description": "Website package",
|
|
"amount": "150.00",
|
|
},
|
|
)
|
|
self.assertEqual(response.status_code, 302)
|
|
inv = Invoice.objects.get()
|
|
self.assertEqual(inv.amount, Decimal("150.00"))
|
|
self.assertEqual(inv.status, Invoice.Status.DRAFT)
|
|
self.assertTrue(inv.number.startswith("INV-"))
|
|
|
|
def test_next_number_increments(self):
|
|
n1 = next_invoice_number()
|
|
Invoice.objects.create(
|
|
number=n1,
|
|
contact=self.contact,
|
|
description="a",
|
|
amount=Decimal("1.00"),
|
|
)
|
|
n2 = next_invoice_number()
|
|
self.assertNotEqual(n1, n2)
|