diff --git a/tests/tests.py b/tests/tests.py index 17183a8..648be1c 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -6,58 +6,57 @@ class MergeTests(TestCase): def setUp(self): self.a = Person.objects.create(name='alf') self.b = Person.objects.create(name='bee') - self.c = Person.objects.create(name='sea') - Number.objects.create(person=self.a, number='555-1111') - Number.objects.create(person=self.a, number='555-1112') - Number.objects.create(person=self.b, number='555-1113') - SSN.objects.create(person=self.a, number='1') - SSN.objects.create(person=self.b, number='2') self.g = Group.objects.create(name='Team Awesome') - self.g.people.add(self.a) - self.g.people.add(self.b) def test_fk_simple(self): - merge(self.a, self.c) + Number.objects.create(person=self.a, number='555-1111') + Number.objects.create(person=self.a, number='555-1112') + merge(self.a, self.b) # move FKs pointing at A to C assert self.a.numbers.count() == 0 - assert self.c.numbers.count() == 2 - assert Number.objects.count() == 3 + assert self.b.numbers.count() == 2 + assert Number.objects.count() == 2 def test_fk_existing(self): + Number.objects.create(person=self.a, number='555-1112') + Number.objects.create(person=self.b, number='555-1113') merge(self.a, self.b) - # everything now on b + # everything now on B assert self.a.numbers.count() == 0 - assert self.b.numbers.count() == 3 - assert Number.objects.count() == 3 + assert self.b.numbers.count() == 2 + assert Number.objects.count() == 2 def test_one2one_simple(self): - merge(self.a, self.c) - # move FKs pointing at A to C - #assert self.a.ssn is None - c = Person.objects.get(pk=self.c.pk) - c.ssn.number == 1 - assert SSN.objects.count() == 2 + SSN.objects.create(person=self.a, number='1') + merge(self.a, self.b) + # move FKs pointing at A to B + #TODO: assert self.a.ssn is None + assert Person.objects.get(pk=self.b.pk).ssn.number == '1' + assert SSN.objects.count() == 1 # TODO: test one2one when there's a conflict def test_many2many_simple(self): - merge(self.a, self.c) - # A's membership in G has been moved to C - assert self.g.people.all().count() == 2 + self.g.people.add(self.a) + merge(self.a, self.b) + # A's membership in G has been moved to B + assert self.g.people.get().name == self.b.name assert self.a.groups.all().count() == 0 - assert self.c.groups.all().count() == 1 + assert self.b.groups.all().count() == 1 def test_many2many_redundant(self): + self.g.people.add(self.a) + self.g.people.add(self.b) merge(self.a, self.b) # A's membership in G is redundant with B's assert self.g.people.all().count() == 1 assert self.a.groups.all().count() == 0 assert self.b.groups.all().count() == 1 - def test_many2many_self(self): - self.a.friends.add(self.b) - merge(self.a, self.c) - import pdb; pdb.set_trace() + def test_many2many_same_class(self): + f = Person.objects.create(name='friend') + self.a.friends.add(f) + merge(self.a, self.b) assert self.a.friends.all().count() == 0 - assert self.b.friends.get().name == self.c - assert self.c.friends.get().name == self.b + assert self.b.friends.get().name == f.name + assert f.get().name == self.b.name