Improve campaign personalization and contact duplicate handling.
Add merge tags for email/SMS, paginated removable recipients, PCM event panels for postcard campaigns, and a portal modal when phone/address matches an existing contact.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.test import Client, TestCase
|
||||
from django.urls import reverse
|
||||
|
||||
@@ -152,3 +153,69 @@ class ContactFormMergeTests(TestCase):
|
||||
self.assertEqual(lead.contact_id, self.existing.pk)
|
||||
self.assertIn("alt@example.com", lead.message)
|
||||
self.assertIn("merged by phone", lead.message)
|
||||
|
||||
|
||||
class PortalCreateMatchPromptTests(TestCase):
|
||||
def setUp(self):
|
||||
User = get_user_model()
|
||||
self.user = User.objects.create_user(
|
||||
username="adder", password="test-pass-123"
|
||||
)
|
||||
self.client = Client()
|
||||
self.client.login(username="adder", password="test-pass-123")
|
||||
self.existing = Contact.objects.create(
|
||||
email="primary@example.com",
|
||||
phone="6301112222",
|
||||
first_name="Alex",
|
||||
)
|
||||
|
||||
def test_phone_match_shows_prompt(self):
|
||||
url = reverse("contacts:create")
|
||||
response = self.client.post(
|
||||
url,
|
||||
{
|
||||
"first_name": "Alex",
|
||||
"email": "alt@example.com",
|
||||
"phone": "(630) 111-2222",
|
||||
"consent_email": "1",
|
||||
},
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "Possible duplicate")
|
||||
self.assertContains(response, "Update existing")
|
||||
self.assertEqual(Contact.objects.count(), 1)
|
||||
|
||||
def test_choose_create_new_keeps_both(self):
|
||||
url = reverse("contacts:create")
|
||||
response = self.client.post(
|
||||
url,
|
||||
{
|
||||
"first_name": "Alex",
|
||||
"email": "alt@example.com",
|
||||
"phone": "(630) 111-2222",
|
||||
"consent_email": "1",
|
||||
"resolve_match": "create",
|
||||
"match_id": str(self.existing.pk),
|
||||
},
|
||||
)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(Contact.objects.count(), 2)
|
||||
|
||||
def test_choose_update_merges(self):
|
||||
url = reverse("contacts:create")
|
||||
response = self.client.post(
|
||||
url,
|
||||
{
|
||||
"first_name": "Alexander",
|
||||
"email": "alt@example.com",
|
||||
"phone": "(630) 111-2222",
|
||||
"consent_email": "1",
|
||||
"resolve_match": "update",
|
||||
"match_id": str(self.existing.pk),
|
||||
},
|
||||
)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(Contact.objects.count(), 1)
|
||||
self.existing.refresh_from_db()
|
||||
self.assertEqual(self.existing.first_name, "Alexander")
|
||||
self.assertIn("alt@example.com", self.existing.notes)
|
||||
|
||||
Reference in New Issue
Block a user