Added more test objects in test_merge_users(), and fixed an issue with merge_users() uncovered by the added testing.
- Legacy-Id: 13730
This commit is contained in:
parent
22a9a46608
commit
c4954e13b1
ietf
|
@ -1,9 +1,9 @@
|
|||
import factory
|
||||
import random
|
||||
|
||||
from ietf.nomcom.models import NomCom, Position, Feedback, Nominee, NomineePosition, Topic
|
||||
from ietf.nomcom.models import NomCom, Position, Feedback, Nominee, NomineePosition, Nomination, Topic
|
||||
from ietf.group.factories import GroupFactory
|
||||
from ietf.person.factories import PersonFactory
|
||||
from ietf.person.factories import PersonFactory, UserFactory
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
|
@ -147,7 +147,7 @@ class NomineeFactory(factory.DjangoModelFactory):
|
|||
model = Nominee
|
||||
|
||||
nomcom = factory.SubFactory(NomComFactory)
|
||||
person = factory.SubFactory(PersonFactory)
|
||||
person = factory.SubFactory(PersonFactory)
|
||||
email = factory.LazyAttribute(lambda obj: obj.person.email())
|
||||
|
||||
class NomineePositionFactory(factory.DjangoModelFactory):
|
||||
|
@ -176,3 +176,17 @@ class TopicFactory(factory.DjangoModelFactory):
|
|||
accepting_feedback = True
|
||||
audience_id = 'general'
|
||||
|
||||
class NominationFactory(factory.DjangoModelFactory):
|
||||
class Meta:
|
||||
model = Nomination
|
||||
|
||||
nominee = factory.SubFactory(NomineeFactory)
|
||||
position = factory.SubFactory(NomineePositionFactory)
|
||||
candidate_name = factory.LazyAttribute(lambda obj: obj.nominee.person.name)
|
||||
candidate_email = factory.LazyAttribute(lambda obj: obj.nominee.person.email())
|
||||
candidate_phone = factory.Faker('phone_number')
|
||||
comments = factory.SubFactory(FeedbackFactory)
|
||||
nominator_email = factory.LazyAttribute(lambda obj: obj.user.email)
|
||||
user = factory.SubFactory(UserFactory)
|
||||
share_nominator = False
|
||||
|
||||
|
|
|
@ -8,6 +8,8 @@ from django.contrib.auth.models import User
|
|||
from django.template.loader import render_to_string
|
||||
from django.template.defaultfilters import linebreaks
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.nomcom.fields import EncryptedTextField
|
||||
from ietf.person.models import Person,Email
|
||||
from ietf.group.models import Group
|
||||
|
|
|
@ -38,7 +38,7 @@ class PersonFactory(factory.DjangoModelFactory):
|
|||
model = Person
|
||||
|
||||
user = factory.SubFactory(UserFactory)
|
||||
name = factory.LazyAttribute(lambda p: '%s %s'%(p.user.first_name,p.user.last_name))
|
||||
name = factory.LazyAttribute(lambda p: u'%s %s'%(p.user.first_name,p.user.last_name))
|
||||
ascii = factory.LazyAttribute(lambda p: unicode(unidecode(p.name).strip()))
|
||||
|
||||
class Params:
|
||||
|
|
|
@ -13,6 +13,7 @@ from ietf.community.models import CommunityList
|
|||
from ietf.group.models import Group
|
||||
from ietf.nomcom.models import NomCom
|
||||
from ietf.nomcom.test_data import nomcom_test_data
|
||||
from ietf.nomcom.factories import NomComFactory, NomineeFactory, NominationFactory, FeedbackFactory, PositionFactory
|
||||
from ietf.person.factories import EmailFactory, PersonFactory, UserFactory
|
||||
from ietf.person.models import Person, Alias
|
||||
from ietf.person.utils import (merge_persons, determine_merge_order, send_merge_notification,
|
||||
|
@ -206,9 +207,20 @@ class PersonUtilsTests(TestCase):
|
|||
|
||||
def test_merge_users(self):
|
||||
make_test_data()
|
||||
source = UserFactory()
|
||||
|
||||
person = PersonFactory()
|
||||
source = person.user
|
||||
target = UserFactory()
|
||||
mars = Group.objects.get(acronym='mars')
|
||||
communitylist = CommunityList.objects.create(user=source, group=mars)
|
||||
nomcom = NomComFactory()
|
||||
position = PositionFactory(nomcom=nomcom)
|
||||
nominee = NomineeFactory(nomcom=nomcom, person=mars.get_chair().person)
|
||||
feedback = FeedbackFactory(user=source, author=person, nomcom=nomcom)
|
||||
feedback.nominees.add(nominee)
|
||||
nomination = NominationFactory(nominee=nominee, user=source, position=position, comments=feedback)
|
||||
|
||||
merge_users(source, target)
|
||||
self.assertTrue(communitylist in target.communitylist_set.all())
|
||||
self.assertIn(communitylist, target.communitylist_set.all())
|
||||
self.assertIn(feedback, target.feedback_set.all())
|
||||
self.assertIn(nomination, target.nomination_set.all())
|
||||
|
|
|
@ -7,6 +7,9 @@ import syslog
|
|||
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.nomcom.models import Nominee
|
||||
from ietf.person.models import Person
|
||||
from ietf.utils.mail import send_mail
|
||||
|
@ -116,12 +119,12 @@ def merge_users(source, target):
|
|||
target.communitylist_set.add(communitylist)
|
||||
# handle feedback
|
||||
for feedback in source.feedback_set.all():
|
||||
source.feedback_set.remove(feedback)
|
||||
target.feedback_set.add(feedback)
|
||||
feedback.user = target
|
||||
feedback.save()
|
||||
# handle nominations
|
||||
for nomination in source.nomination_set.all():
|
||||
source.nomination_set.remove(nomination)
|
||||
target.nomination_set.add(nomination)
|
||||
nomination.user = target
|
||||
nomination.save()
|
||||
|
||||
def dedupe_aliases(person):
|
||||
'''Check person for duplicate aliases and purge'''
|
||||
|
|
Loading…
Reference in a new issue