|
19 | 19 | from ietf.person.utils import (merge_persons, determine_merge_order, send_merge_notification, |
20 | 20 | handle_users, get_extra_primary, dedupe_aliases, move_related_objects, merge_nominees, merge_users) |
21 | 21 | from ietf.utils.test_data import make_test_data |
22 | | -from ietf.utils.test_utils import TestCase |
| 22 | +from ietf.utils.test_utils import TestCase, login_testing_unauthorized |
23 | 23 | from ietf.utils.mail import outbox, empty_outbox |
24 | 24 |
|
25 | 25 |
|
26 | | -class PersonTests(TestCase): |
| 26 | +def get_person_no_user(): |
| 27 | + person = PersonFactory() |
| 28 | + person.user = None |
| 29 | + person.save() |
| 30 | + return person |
| 31 | + |
27 | 32 |
|
| 33 | +class PersonTests(TestCase): |
28 | 34 | def test_ajax_search_emails(self): |
29 | 35 | draft = make_test_data() |
30 | 36 | person = draft.ad |
@@ -87,18 +93,43 @@ def test_duplicate_person_name(self): |
87 | 93 | Person.objects.create(name="Duplicate Test") |
88 | 94 | self.assertTrue("possible duplicate" in outbox[0]["Subject"].lower()) |
89 | 95 |
|
| 96 | + def test_merge(self): |
| 97 | + url = urlreverse("ietf.person.views.merge") |
| 98 | + login_testing_unauthorized(self, "secretary", url) |
| 99 | + r = self.client.get(url) |
| 100 | + self.assertEqual(r.status_code, 200) |
90 | 101 |
|
91 | | -class PersonUtilsTests(TestCase): |
92 | | - def get_person_no_user(self): |
93 | | - person = PersonFactory() |
94 | | - person.user = None |
95 | | - person.save() |
96 | | - return person |
| 102 | + def test_merge_with_params(self): |
| 103 | + p1 = get_person_no_user() |
| 104 | + p2 = PersonFactory() |
| 105 | + url = urlreverse("ietf.person.views.merge") + "?source={}&target={}".format(p1.pk, p2.pk) |
| 106 | + login_testing_unauthorized(self, "secretary", url) |
| 107 | + r = self.client.get(url) |
| 108 | + self.assertContains(r, 'retaining login', status_code=200) |
| 109 | + |
| 110 | + def test_merge_with_params_bad_id(self): |
| 111 | + url = urlreverse("ietf.person.views.merge") + "?source=1000&target=2000" |
| 112 | + login_testing_unauthorized(self, "secretary", url) |
| 113 | + r = self.client.get(url) |
| 114 | + self.assertContains(r, 'ID does not exist', status_code=200) |
97 | 115 |
|
| 116 | + def test_merge_post(self): |
| 117 | + p1 = get_person_no_user() |
| 118 | + p2 = PersonFactory() |
| 119 | + url = urlreverse("ietf.person.views.merge") |
| 120 | + expected_url = urlreverse("ietf.secr.rolodex.views.view", kwargs={'id': p2.pk}) |
| 121 | + login_testing_unauthorized(self, "secretary", url) |
| 122 | + data = {'source': p1.pk, 'target': p2.pk} |
| 123 | + r = self.client.post(url, data, follow=True) |
| 124 | + self.assertRedirects(r, expected_url) |
| 125 | + self.assertContains(r, 'Merged', status_code=200) |
| 126 | + self.assertFalse(Person.objects.filter(pk=p1.pk)) |
| 127 | + |
| 128 | +class PersonUtilsTests(TestCase): |
98 | 129 | def test_determine_merge_order(self): |
99 | | - p1 = self.get_person_no_user() |
| 130 | + p1 = get_person_no_user() |
100 | 131 | p2 = PersonFactory() |
101 | | - p3 = self.get_person_no_user() |
| 132 | + p3 = get_person_no_user() |
102 | 133 | p4 = PersonFactory() |
103 | 134 |
|
104 | 135 | # target has User |
@@ -130,12 +161,12 @@ def test_send_merge_notification(self): |
130 | 161 | self.assertTrue('IETF Datatracker records merged' in outbox[-1]['Subject']) |
131 | 162 |
|
132 | 163 | def test_handle_users(self): |
133 | | - source1 = self.get_person_no_user() |
134 | | - target1 = self.get_person_no_user() |
135 | | - source2 = self.get_person_no_user() |
| 164 | + source1 = get_person_no_user() |
| 165 | + target1 = get_person_no_user() |
| 166 | + source2 = get_person_no_user() |
136 | 167 | target2 = PersonFactory() |
137 | 168 | source3 = PersonFactory() |
138 | | - target3 = self.get_person_no_user() |
| 169 | + target3 = get_person_no_user() |
139 | 170 | source4 = PersonFactory() |
140 | 171 | target4 = PersonFactory() |
141 | 172 |
|
@@ -224,4 +255,4 @@ def test_merge_users(self): |
224 | 255 | merge_users(source, target) |
225 | 256 | self.assertIn(communitylist, target.communitylist_set.all()) |
226 | 257 | self.assertIn(feedback, target.feedback_set.all()) |
227 | | - self.assertIn(nomination, target.nomination_set.all()) |
| 258 | + self.assertIn(nomination, target.nomination_set.all()) |
0 commit comments