Skip to content

Commit c4954e1

Browse files
committed
Added more test objects in test_merge_users(), and fixed an issue with merge_users() uncovered by the added testing.
- Legacy-Id: 13730
1 parent 22a9a46 commit c4954e1

5 files changed

Lines changed: 41 additions & 10 deletions

File tree

ietf/nomcom/factories.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import factory
22
import random
33

4-
from ietf.nomcom.models import NomCom, Position, Feedback, Nominee, NomineePosition, Topic
4+
from ietf.nomcom.models import NomCom, Position, Feedback, Nominee, NomineePosition, Nomination, Topic
55
from ietf.group.factories import GroupFactory
6-
from ietf.person.factories import PersonFactory
6+
from ietf.person.factories import PersonFactory, UserFactory
77

88
import debug # pyflakes:ignore
99

@@ -147,7 +147,7 @@ class Meta:
147147
model = Nominee
148148

149149
nomcom = factory.SubFactory(NomComFactory)
150-
person = factory.SubFactory(PersonFactory)
150+
person = factory.SubFactory(PersonFactory)
151151
email = factory.LazyAttribute(lambda obj: obj.person.email())
152152

153153
class NomineePositionFactory(factory.DjangoModelFactory):
@@ -176,3 +176,17 @@ class Meta:
176176
accepting_feedback = True
177177
audience_id = 'general'
178178

179+
class NominationFactory(factory.DjangoModelFactory):
180+
class Meta:
181+
model = Nomination
182+
183+
nominee = factory.SubFactory(NomineeFactory)
184+
position = factory.SubFactory(NomineePositionFactory)
185+
candidate_name = factory.LazyAttribute(lambda obj: obj.nominee.person.name)
186+
candidate_email = factory.LazyAttribute(lambda obj: obj.nominee.person.email())
187+
candidate_phone = factory.Faker('phone_number')
188+
comments = factory.SubFactory(FeedbackFactory)
189+
nominator_email = factory.LazyAttribute(lambda obj: obj.user.email)
190+
user = factory.SubFactory(UserFactory)
191+
share_nominator = False
192+

ietf/nomcom/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
from django.template.loader import render_to_string
99
from django.template.defaultfilters import linebreaks
1010

11+
import debug # pyflakes:ignore
12+
1113
from ietf.nomcom.fields import EncryptedTextField
1214
from ietf.person.models import Person,Email
1315
from ietf.group.models import Group

ietf/person/factories.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class Meta:
3838
model = Person
3939

4040
user = factory.SubFactory(UserFactory)
41-
name = factory.LazyAttribute(lambda p: '%s %s'%(p.user.first_name,p.user.last_name))
41+
name = factory.LazyAttribute(lambda p: u'%s %s'%(p.user.first_name,p.user.last_name))
4242
ascii = factory.LazyAttribute(lambda p: unicode(unidecode(p.name).strip()))
4343

4444
class Params:

ietf/person/tests.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from ietf.group.models import Group
1414
from ietf.nomcom.models import NomCom
1515
from ietf.nomcom.test_data import nomcom_test_data
16+
from ietf.nomcom.factories import NomComFactory, NomineeFactory, NominationFactory, FeedbackFactory, PositionFactory
1617
from ietf.person.factories import EmailFactory, PersonFactory, UserFactory
1718
from ietf.person.models import Person, Alias
1819
from ietf.person.utils import (merge_persons, determine_merge_order, send_merge_notification,
@@ -206,9 +207,20 @@ def test_merge_persons(self):
206207

207208
def test_merge_users(self):
208209
make_test_data()
209-
source = UserFactory()
210+
211+
person = PersonFactory()
212+
source = person.user
210213
target = UserFactory()
211214
mars = Group.objects.get(acronym='mars')
212215
communitylist = CommunityList.objects.create(user=source, group=mars)
216+
nomcom = NomComFactory()
217+
position = PositionFactory(nomcom=nomcom)
218+
nominee = NomineeFactory(nomcom=nomcom, person=mars.get_chair().person)
219+
feedback = FeedbackFactory(user=source, author=person, nomcom=nomcom)
220+
feedback.nominees.add(nominee)
221+
nomination = NominationFactory(nominee=nominee, user=source, position=position, comments=feedback)
222+
213223
merge_users(source, target)
214-
self.assertTrue(communitylist in target.communitylist_set.all())
224+
self.assertIn(communitylist, target.communitylist_set.all())
225+
self.assertIn(feedback, target.feedback_set.all())
226+
self.assertIn(nomination, target.nomination_set.all())

ietf/person/utils.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
from django.contrib import admin
99
from django.contrib.auth.models import User
10+
11+
import debug # pyflakes:ignore
12+
1013
from ietf.nomcom.models import Nominee
1114
from ietf.person.models import Person
1215
from ietf.utils.mail import send_mail
@@ -116,12 +119,12 @@ def merge_users(source, target):
116119
target.communitylist_set.add(communitylist)
117120
# handle feedback
118121
for feedback in source.feedback_set.all():
119-
source.feedback_set.remove(feedback)
120-
target.feedback_set.add(feedback)
122+
feedback.user = target
123+
feedback.save()
121124
# handle nominations
122125
for nomination in source.nomination_set.all():
123-
source.nomination_set.remove(nomination)
124-
target.nomination_set.add(nomination)
126+
nomination.user = target
127+
nomination.save()
125128

126129
def dedupe_aliases(person):
127130
'''Check person for duplicate aliases and purge'''

0 commit comments

Comments
 (0)