fix: Fix transient test failures due to i18n names (#4695)
* Search for escaped name in HTML output * Need to check for `plain_name()` in sent emails * Normalize i18n Unicode names in the same way the database does
This commit is contained in:
parent
331bf8d2dc
commit
d16a9e77a7
|
@ -414,7 +414,7 @@ class ReviewTests(TestCase):
|
|||
login_testing_unauthorized(self, "reviewsecretary", reject_url)
|
||||
r = self.client.get(reject_url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertContains(r, assignment.reviewer.person.name)
|
||||
self.assertContains(r, escape(assignment.reviewer.person.name))
|
||||
self.assertNotContains(r, 'can not be rejected')
|
||||
self.assertContains(r, '<button type="submit"')
|
||||
|
||||
|
@ -442,7 +442,7 @@ class ReviewTests(TestCase):
|
|||
|
||||
r = self.client.get(reject_url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertContains(r, assignment.reviewer.person.name)
|
||||
self.assertContains(r, escape(assignment.reviewer.person.name))
|
||||
self.assertContains(r, 'can not be rejected')
|
||||
self.assertNotContains(r, '<button type="submit"')
|
||||
|
||||
|
@ -1154,4 +1154,4 @@ class ReviewTests(TestCase):
|
|||
ReviewWish.objects.create(person=reviewer, doc=doc, team=team)
|
||||
r = self.client.post(url + '?next=http://example.com')
|
||||
self.assertRedirects(r, doc.get_absolute_url(), fetch_redirect_response=False)
|
||||
self.assertFalse(ReviewWish.objects.all())
|
||||
self.assertFalse(ReviewWish.objects.all())
|
||||
|
|
|
@ -11,6 +11,7 @@ import random
|
|||
import shutil
|
||||
|
||||
from unidecode import unidecode
|
||||
from unicodedata import normalize
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
|
@ -47,8 +48,9 @@ class UserFactory(factory.django.DjangoModelFactory):
|
|||
exclude = ['faker', ]
|
||||
|
||||
faker = factory.LazyFunction(random_faker)
|
||||
first_name = factory.LazyAttribute(lambda o: o.faker.first_name())
|
||||
last_name = factory.LazyAttribute(lambda o: o.faker.last_name())
|
||||
# normalize these i18n Unicode strings in the same way the database does
|
||||
first_name = factory.LazyAttribute(lambda o: normalize("NFKC", o.faker.first_name()))
|
||||
last_name = factory.LazyAttribute(lambda o: normalize("NFKC", o.faker.last_name()))
|
||||
email = factory.LazyAttributeSequence(lambda u, n: '%s.%s_%d@%s'%( slugify(unidecode(u.first_name)),
|
||||
slugify(unidecode(u.last_name)), n, fake.domain_name())) # type: ignore
|
||||
username = factory.LazyAttribute(lambda u: u.email)
|
||||
|
|
|
@ -384,10 +384,10 @@ class ReviewAssignmentReminderTests(TestCase):
|
|||
self.assertTrue(self.reviewer.email_address() in outbox[0]["To"])
|
||||
self.assertTrue(secretary.person.email_address() in outbox[0]["To"])
|
||||
message = get_payload_text(outbox[0])
|
||||
self.assertTrue(self.reviewer.name in message)
|
||||
self.assertTrue(self.reviewer.plain_name() in message)
|
||||
self.assertTrue(self.team.acronym in message)
|
||||
self.assertEqual(len(log), 1)
|
||||
self.assertTrue(self.reviewer.name in log[0])
|
||||
self.assertTrue(self.reviewer.plain_name() in log[0])
|
||||
self.assertTrue(self.team.acronym in log[0])
|
||||
|
||||
def test_send_review_reminder_overdue_assignment(self):
|
||||
|
|
Loading…
Reference in a new issue