Add customer accounts, shipment tracking, and purchase reviews.
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.
This commit is contained in:
2026-09-07 06:37:52 -05:00
parent 23a6035ba8
commit c9b81ceed7
59 changed files with 1905 additions and 275 deletions
+7 -7
View File
@@ -123,7 +123,7 @@ class PortalConsentToggleTests(TestCase):
def setUp(self):
User = get_user_model()
self.user = User.objects.create_user(
username="monica", password="test-pass-123"
username="monica", password="test-pass-123", is_staff=True
)
self.client = Client()
self.client.login(username="monica", password="test-pass-123")
@@ -190,7 +190,7 @@ class CampaignDraftSaveTests(TestCase):
def setUp(self):
User = get_user_model()
self.user = User.objects.create_user(
username="composer", password="test-pass-123"
username="composer", password="test-pass-123", is_staff=True
)
self.client = Client()
self.client.login(username="composer", password="test-pass-123")
@@ -260,7 +260,7 @@ class CampaignSendTests(TestCase):
def setUp(self):
User = get_user_model()
self.user = User.objects.create_user(
username="sender", password="test-pass-123", email="sender@example.com"
username="sender", password="test-pass-123", email="sender@example.com", is_staff=True
)
self.client = Client()
self.client.login(username="sender", password="test-pass-123")
@@ -467,7 +467,7 @@ class Smtp2goEmailWebhookTests(TestCase):
def test_status_json_includes_opens(self):
User = get_user_model()
user = User.objects.create_user(username="viewer", password="test-pass-123")
user = User.objects.create_user(username="viewer", password="test-pass-123", is_staff=True)
self.client.login(username="viewer", password="test-pass-123")
ProviderEvent.objects.create(
message=self.message,
@@ -946,7 +946,7 @@ class StoredFileUploadTests(TestCase):
def setUp(self):
User = get_user_model()
self.user = User.objects.create_user(
username="uploader", password="test-pass-123"
username="uploader", password="test-pass-123", is_staff=True
)
self.client = Client()
self.client.login(username="uploader", password="test-pass-123")
@@ -1030,7 +1030,7 @@ class CampaignRecipientTableTests(TestCase):
User = get_user_model()
self.user = User.objects.create_user(
username="recip", password="test-pass-123"
username="recip", password="test-pass-123", is_staff=True
)
self.client = Client()
self.client.login(username="recip", password="test-pass-123")
@@ -1169,7 +1169,7 @@ class CampaignUtmLinkTests(TestCase):
def setUp(self):
User = get_user_model()
self.user = User.objects.create_user(
username="utm-composer", password="test-pass-123"
username="utm-composer", password="test-pass-123", is_staff=True
)
self.client = Client()
self.client.login(username="utm-composer", password="test-pass-123")