diff --git a/RIGS/test_unit.py b/RIGS/test_unit.py index b6fc8edd..75fcca5a 100644 --- a/RIGS/test_unit.py +++ b/RIGS/test_unit.py @@ -5,135 +5,153 @@ from datetime import date from RIGS import models from django.core.exceptions import ObjectDoesNotExist + class TestAdminMergeObjects(TestCase): - @classmethod - def setUpTestData(cls): - cls.profile = models.Profile.objects.create(username="testuser1", email="1@test.com", is_superuser=True, is_active=True, is_staff=True) + @classmethod + def setUpTestData(cls): + cls.profile = models.Profile.objects.create(username="testuser1", email="1@test.com", is_superuser=True, + is_active=True, is_staff=True) - cls.persons = { - 1: models.Person.objects.create(name="Person 1"), - 2: models.Person.objects.create(name="Person 2"), - 3: models.Person.objects.create(name="Person 3"), - } + cls.persons = { + 1: models.Person.objects.create(name="Person 1"), + 2: models.Person.objects.create(name="Person 2"), + 3: models.Person.objects.create(name="Person 3"), + } - cls.organisations = { - 1: models.Organisation.objects.create(name="Organisation 1"), - 2: models.Organisation.objects.create(name="Organisation 2"), - 3: models.Organisation.objects.create(name="Organisation 3"), - } + cls.organisations = { + 1: models.Organisation.objects.create(name="Organisation 1"), + 2: models.Organisation.objects.create(name="Organisation 2"), + 3: models.Organisation.objects.create(name="Organisation 3"), + } - cls.venues = { - 1: models.Venue.objects.create(name="Venue 1"), - 2: models.Venue.objects.create(name="Venue 2"), - 3: models.Venue.objects.create(name="Venue 3"), - } + cls.venues = { + 1: models.Venue.objects.create(name="Venue 1"), + 2: models.Venue.objects.create(name="Venue 2"), + 3: models.Venue.objects.create(name="Venue 3"), + } - cls.events = { - 1: models.Event.objects.create(name="TE E1", start_date=date.today(), person=cls.persons[1], organisation=cls.organisations[3], venue=cls.venues[2]), - 2: models.Event.objects.create(name="TE E2", start_date=date.today(), person=cls.persons[2], organisation=cls.organisations[2], venue=cls.venues[3]), - 3: models.Event.objects.create(name="TE E3", start_date=date.today(), person=cls.persons[3], organisation=cls.organisations[1], venue=cls.venues[1]), - 4: models.Event.objects.create(name="TE E4", start_date=date.today(), person=cls.persons[3], organisation=cls.organisations[3], venue=cls.venues[3]), - } + cls.events = { + 1: models.Event.objects.create(name="TE E1", start_date=date.today(), person=cls.persons[1], + organisation=cls.organisations[3], venue=cls.venues[2]), + 2: models.Event.objects.create(name="TE E2", start_date=date.today(), person=cls.persons[2], + organisation=cls.organisations[2], venue=cls.venues[3]), + 3: models.Event.objects.create(name="TE E3", start_date=date.today(), person=cls.persons[3], + organisation=cls.organisations[1], venue=cls.venues[1]), + 4: models.Event.objects.create(name="TE E4", start_date=date.today(), person=cls.persons[3], + organisation=cls.organisations[3], venue=cls.venues[3]), + } - def setUp(self): - self.profile.set_password('testuser') - self.profile.save() - self.assertTrue(self.client.login(username=self.profile.username, password='testuser')) + def setUp(self): + self.profile.set_password('testuser') + self.profile.save() + self.assertTrue(self.client.login(username=self.profile.username, password='testuser')) - def test_merge_confirmation(self): - change_url = reverse('admin:RIGS_venue_changelist') - data = { - 'action': 'merge', - '_selected_action': [unicode(val.pk) for key,val in self.venues.iteritems()] + def test_merge_confirmation(self): + change_url = reverse('admin:RIGS_venue_changelist') + data = { + 'action': 'merge', + '_selected_action': [unicode(val.pk) for key, val in self.venues.iteritems()] - } - response = self.client.post(change_url, data, follow=True) + } + response = self.client.post(change_url, data, follow=True) - self.assertContains(response, "The following objects will be merged") - for key,venue in self.venues.iteritems(): - self.assertContains(response, venue.name) + self.assertContains(response, "The following objects will be merged") + for key, venue in self.venues.iteritems(): + self.assertContains(response, venue.name) - def test_merge_no_master(self): - change_url = reverse('admin:RIGS_venue_changelist') - data = {'action': 'merge', - '_selected_action': [unicode(val.pk) for key,val in self.venues.iteritems()], - 'post':'yes', - } - response = self.client.post(change_url, data, follow=True) + def test_merge_no_master(self): + change_url = reverse('admin:RIGS_venue_changelist') + data = {'action': 'merge', + '_selected_action': [unicode(val.pk) for key, val in self.venues.iteritems()], + 'post': 'yes', + } + response = self.client.post(change_url, data, follow=True) - self.assertContains(response, "An error occured") - - def test_venue_merge(self): - change_url = reverse('admin:RIGS_venue_changelist') + self.assertContains(response, "An error occured") - data = {'action': 'merge', - '_selected_action': [unicode(val.pk) for key,val in self.venues.iteritems()], - 'post':'yes', - 'master':self.venues[1].pk - } + def test_venue_merge(self): + change_url = reverse('admin:RIGS_venue_changelist') - response = self.client.post(change_url, data, follow=True) - self.assertContains(response, "Objects successfully merged") - self.assertContains(response, self.venues[1].name) + data = {'action': 'merge', + '_selected_action': [unicode(self.venues[1].pk), unicode(self.venues[2].pk)], + 'post': 'yes', + 'master': self.venues[1].pk + } - # Check the master copy still exists - self.assertTrue(models.Venue.objects.get(pk=self.venues[1].pk)) + response = self.client.post(change_url, data, follow=True) + self.assertContains(response, "Objects successfully merged") + self.assertContains(response, self.venues[1].name) - # Check the un-needed venues have been disposed of - self.assertRaises(ObjectDoesNotExist, models.Venue.objects.get, pk=self.venues[2].pk) - self.assertRaises(ObjectDoesNotExist, models.Venue.objects.get, pk=self.venues[3].pk) + # Check the master copy still exists + self.assertTrue(models.Venue.objects.get(pk=self.venues[1].pk)) - # Check the events have been moved to the master venue - for key,event in self.events.iteritems(): - updatedEvent = models.Event.objects.get(pk=event.pk) - self.assertEqual(updatedEvent.venue, self.venues[1]) + # Check the un-needed venue has been disposed of + self.assertRaises(ObjectDoesNotExist, models.Venue.objects.get, pk=self.venues[2].pk) - def test_person_merge(self): - change_url = reverse('admin:RIGS_person_changelist') + # Check the one we didn't delete is still there + self.assertEqual(models.Venue.objects.get(pk=self.venues[3].pk), self.venues[3]) - data = {'action': 'merge', - '_selected_action': [unicode(val.pk) for key,val in self.persons.iteritems()], - 'post':'yes', - 'master':self.persons[1].pk - } + # Check the events have been moved to the master venue + for key, event in self.events.iteritems(): + updatedEvent = models.Event.objects.get(pk=event.pk) + if event.venue == self.venues[3]: # The one we left in place + continue + self.assertEqual(updatedEvent.venue, self.venues[1]) - response = self.client.post(change_url, data, follow=True) - self.assertContains(response, "Objects successfully merged") - self.assertContains(response, self.persons[1].name) + def test_person_merge(self): + change_url = reverse('admin:RIGS_person_changelist') - # Check the master copy still exists - self.assertTrue(models.Person.objects.get(pk=self.persons[1].pk)) + data = {'action': 'merge', + '_selected_action': [unicode(self.persons[1].pk), unicode(self.persons[2].pk)], + 'post': 'yes', + 'master': self.persons[1].pk + } - # Check the un-needed people have been disposed of - self.assertRaises(ObjectDoesNotExist, models.Person.objects.get, pk=self.persons[2].pk) - self.assertRaises(ObjectDoesNotExist, models.Person.objects.get, pk=self.persons[3].pk) + response = self.client.post(change_url, data, follow=True) + self.assertContains(response, "Objects successfully merged") + self.assertContains(response, self.persons[1].name) - # Check the events have been moved to the master person - for key,event in self.events.iteritems(): - updatedEvent = models.Event.objects.get(pk=event.pk) - self.assertEqual(updatedEvent.person, self.persons[1]) + # Check the master copy still exists + self.assertTrue(models.Person.objects.get(pk=self.persons[1].pk)) - def test_organisation_merge(self): - change_url = reverse('admin:RIGS_organisation_changelist') + # Check the un-needed people have been disposed of + self.assertRaises(ObjectDoesNotExist, models.Person.objects.get, pk=self.persons[2].pk) - data = {'action': 'merge', - '_selected_action': [unicode(val.pk) for key,val in self.organisations.iteritems()], - 'post':'yes', - 'master':self.organisations[1].pk - } + # Check the one we didn't delete is still there + self.assertEqual(models.Person.objects.get(pk=self.persons[3].pk), self.persons[3]) - response = self.client.post(change_url, data, follow=True) - self.assertContains(response, "Objects successfully merged") - self.assertContains(response, self.organisations[1].name) + # Check the events have been moved to the master person + for key, event in self.events.iteritems(): + updatedEvent = models.Event.objects.get(pk=event.pk) + if event.person == self.persons[3]: # The one we left in place + continue + self.assertEqual(updatedEvent.person, self.persons[1]) - # Check the master copy still exists - self.assertTrue(models.Organisation.objects.get(pk=self.organisations[1].pk)) + def test_organisation_merge(self): + change_url = reverse('admin:RIGS_organisation_changelist') - # Check the un-needed organisations have been disposed of - self.assertRaises(ObjectDoesNotExist, models.Organisation.objects.get, pk=self.organisations[2].pk) - self.assertRaises(ObjectDoesNotExist, models.Organisation.objects.get, pk=self.organisations[3].pk) + data = {'action': 'merge', + '_selected_action': [unicode(self.organisations[1].pk), unicode(self.organisations[2].pk)], + 'post': 'yes', + 'master': self.organisations[1].pk + } - # Check the events have been moved to the master organisation - for key,event in self.events.iteritems(): - updatedEvent = models.Event.objects.get(pk=event.pk) - self.assertEqual(updatedEvent.organisation, self.organisations[1]) \ No newline at end of file + response = self.client.post(change_url, data, follow=True) + self.assertContains(response, "Objects successfully merged") + self.assertContains(response, self.organisations[1].name) + + # Check the master copy still exists + self.assertTrue(models.Organisation.objects.get(pk=self.organisations[1].pk)) + + # Check the un-needed organisations have been disposed of + self.assertRaises(ObjectDoesNotExist, models.Organisation.objects.get, pk=self.organisations[2].pk) + + # Check the one we didn't delete is still there + self.assertEqual(models.Organisation.objects.get(pk=self.organisations[3].pk), self.organisations[3]) + + # Check the events have been moved to the master organisation + for key, event in self.events.iteritems(): + updatedEvent = models.Event.objects.get(pk=event.pk) + if event.organisation == self.organisations[3]: # The one we left in place + continue + self.assertEqual(updatedEvent.organisation, self.organisations[1])