diff options
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r-- | ishtar_common/tests.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index cdcb42103..000abc268 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -20,6 +20,7 @@ import tempfile from zipfile import ZipFile, ZIP_DEFLATED +from django.contrib.auth.models import User from django.test import TestCase from ishtar_common import models, ooo_replace @@ -34,3 +35,59 @@ class OOOGenerationTest(TestCase): value = inzip.read('content.xml') self.assertTrue("Testé" in value) self.assertTrue("testé 2" not in value) + +class MergeTest(TestCase): + def setUp(self): + self.user, created = User.objects.get_or_create(username='username') + self.organisation_types = models.OrganizationType.create_default_for_test() + + self.person_types = [models.PersonType.objects.create(label='Admin'), + models.PersonType.objects.create(label='User')] + self.author_types = [models.AuthorType.objects.create(label='1'), + models.AuthorType.objects.create(label='2'),] + + self.company_1 = models.Organization.objects.create( + history_modifier=self.user, name='Franquin Comp.', + organization_type=self.organisation_types[0]) + self.person_1 = models.Person.objects.create(name='Boule', + surname=' ', + history_modifier=self.user, attached_to=self.company_1) + self.person_1.person_types.add(self.person_types[0]) + self.author_1_pk = models.Author.objects.create(person=self.person_1, + author_type=self.author_types[0]).pk + + self.company_2 = models.Organization.objects.create( + history_modifier=self.user, name='Goscinny Corp.', + organization_type=self.organisation_types[1]) + self.person_2 = models.Person.objects.create(name='Bill', + history_modifier=self.user, surname='Peyo', title='Mr', + attached_to=self.company_2) + self.person_2.person_types.add(self.person_types[1]) + self.author_2_pk = models.Author.objects.create(person=self.person_2, + author_type=self.author_types[1]).pk + self.person_3 = models.Person.objects.create(name='George', + history_modifier=self.user, attached_to=self.company_1) + + def testPersonMerge(self): + self.person_1.merge(self.person_2) + # preserve existing fields + self.assertEqual(self.person_1.name, 'Boule') + # fill missing fields + self.assertEqual(self.person_1.title, 'Mr') + # string field with only spaces is an empty field + self.assertEqual(self.person_1.surname, 'Peyo') + # preserve existing foreign key + self.assertEqual(self.person_1.attached_to, self.company_1) + # preserve existing many to many + self.assertTrue(self.person_types[0] in self.person_1.person_types.all()) + # add new many to many + self.assertTrue(self.person_types[1] in self.person_1.person_types.all()) + # update reverse foreign key association and dont break the existing + self.assertEqual(models.Author.objects.get(pk=self.author_1_pk).person, + self.person_1) + self.assertEqual(models.Author.objects.get(pk=self.author_2_pk).person, + self.person_1) + + self.person_3.merge(self.person_1) + # manage well empty many to many fields + self.assertTrue(self.person_types[1] in self.person_3.person_types.all()) |