summaryrefslogtreecommitdiff
path: root/ishtar_common/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r--ishtar_common/tests.py57
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())