chore: use factory-boy 3.3 (#6269)
This commit is contained in:
parent
f54f04460f
commit
3c1fc3c0f9
|
@ -581,6 +581,7 @@ class CustomApiTests(TestCase):
|
||||||
url = urlreverse('ietf.api.views.PersonalInformationExportView')
|
url = urlreverse('ietf.api.views.PersonalInformationExportView')
|
||||||
login_testing_unauthorized(self, person.user.username, url)
|
login_testing_unauthorized(self, person.user.username, url)
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
|
self.assertEqual(r.status_code, 200)
|
||||||
jsondata = r.json()
|
jsondata = r.json()
|
||||||
data = jsondata['person.person'][str(person.id)]
|
data = jsondata['person.person'][str(person.id)]
|
||||||
self.assertEqual(data['name'], person.name)
|
self.assertEqual(data['name'], person.name)
|
||||||
|
|
|
@ -35,6 +35,7 @@ def draft_name_generator(type_id,group,n):
|
||||||
class BaseDocumentFactory(factory.django.DjangoModelFactory):
|
class BaseDocumentFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Document
|
model = Document
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
title = factory.Faker('sentence',nb_words=5)
|
title = factory.Faker('sentence',nb_words=5)
|
||||||
abstract = factory.Faker('paragraph', nb_sentences=5)
|
abstract = factory.Faker('paragraph', nb_sentences=5)
|
||||||
|
@ -329,6 +330,7 @@ class ReviewFactory(BaseDocumentFactory):
|
||||||
class DocAliasFactory(factory.django.DjangoModelFactory):
|
class DocAliasFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = DocAlias
|
model = DocAlias
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
@factory.post_generation
|
@factory.post_generation
|
||||||
def document(self, create, extracted, **kwargs):
|
def document(self, create, extracted, **kwargs):
|
||||||
|
@ -378,6 +380,7 @@ class NewRevisionDocEventFactory(DocEventFactory):
|
||||||
class StateDocEventFactory(DocEventFactory):
|
class StateDocEventFactory(DocEventFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = StateDocEvent
|
model = StateDocEvent
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
type = 'changed_state'
|
type = 'changed_state'
|
||||||
state_type_id = 'draft-iesg'
|
state_type_id = 'draft-iesg'
|
||||||
|
@ -451,6 +454,7 @@ class WgDocumentAuthorFactory(DocumentAuthorFactory):
|
||||||
class BofreqEditorDocEventFactory(DocEventFactory):
|
class BofreqEditorDocEventFactory(DocEventFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = BofreqEditorDocEvent
|
model = BofreqEditorDocEvent
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
type = "changed_editors"
|
type = "changed_editors"
|
||||||
doc = factory.SubFactory('ietf.doc.factories.BofreqFactory')
|
doc = factory.SubFactory('ietf.doc.factories.BofreqFactory')
|
||||||
|
@ -465,10 +469,12 @@ class BofreqEditorDocEventFactory(DocEventFactory):
|
||||||
else:
|
else:
|
||||||
obj.editors.set(PersonFactory.create_batch(3))
|
obj.editors.set(PersonFactory.create_batch(3))
|
||||||
obj.desc = f'Changed editors to {", ".join(obj.editors.values_list("name",flat=True)) or "(None)"}'
|
obj.desc = f'Changed editors to {", ".join(obj.editors.values_list("name",flat=True)) or "(None)"}'
|
||||||
|
obj.save()
|
||||||
|
|
||||||
class BofreqResponsibleDocEventFactory(DocEventFactory):
|
class BofreqResponsibleDocEventFactory(DocEventFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = BofreqResponsibleDocEvent
|
model = BofreqResponsibleDocEvent
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
type = "changed_responsible"
|
type = "changed_responsible"
|
||||||
doc = factory.SubFactory('ietf.doc.factories.BofreqFactory')
|
doc = factory.SubFactory('ietf.doc.factories.BofreqFactory')
|
||||||
|
@ -484,6 +490,7 @@ class BofreqResponsibleDocEventFactory(DocEventFactory):
|
||||||
ad = RoleFactory(group__type_id='area',name_id='ad').person
|
ad = RoleFactory(group__type_id='area',name_id='ad').person
|
||||||
obj.responsible.set([ad])
|
obj.responsible.set([ad])
|
||||||
obj.desc = f'Changed responsible leadership to {", ".join(obj.responsible.values_list("name",flat=True)) or "(None)"}'
|
obj.desc = f'Changed responsible leadership to {", ".join(obj.responsible.values_list("name",flat=True)) or "(None)"}'
|
||||||
|
obj.save()
|
||||||
|
|
||||||
class BofreqFactory(BaseDocumentFactory):
|
class BofreqFactory(BaseDocumentFactory):
|
||||||
type_id = 'bofreq'
|
type_id = 'bofreq'
|
||||||
|
|
|
@ -25,6 +25,7 @@ class GroupFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Group
|
model = Group
|
||||||
django_get_or_create = ('acronym',)
|
django_get_or_create = ('acronym',)
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
name = factory.Faker('sentence',nb_words=6)
|
name = factory.Faker('sentence',nb_words=6)
|
||||||
acronym = factory.Sequence(lambda n: 'acronym%d' %n)
|
acronym = factory.Sequence(lambda n: 'acronym%d' %n)
|
||||||
|
@ -87,6 +88,7 @@ class DatelessGroupMilestoneFactory(BaseGroupMilestoneFactory):
|
||||||
class GroupHistoryFactory(factory.django.DjangoModelFactory):
|
class GroupHistoryFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model=GroupHistory
|
model=GroupHistory
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
time = lambda: timezone.now()
|
time = lambda: timezone.now()
|
||||||
group = factory.SubFactory(GroupFactory, state_id='active')
|
group = factory.SubFactory(GroupFactory, state_id='active')
|
||||||
|
@ -138,6 +140,7 @@ class AppealFactory(factory.django.DjangoModelFactory):
|
||||||
class AppealArtifactFactory(factory.django.DjangoModelFactory):
|
class AppealArtifactFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model=AppealArtifact
|
model=AppealArtifact
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
appeal = factory.SubFactory(AppealFactory)
|
appeal = factory.SubFactory(AppealFactory)
|
||||||
artifact_type = factory.SubFactory("ietf.name.factories.AppealArtifactTypeNameFactory", slug="appeal")
|
artifact_type = factory.SubFactory("ietf.name.factories.AppealArtifactTypeNameFactory", slug="appeal")
|
||||||
|
@ -158,4 +161,5 @@ class AppealArtifactFactory(factory.django.DjangoModelFactory):
|
||||||
if isinstance(using, str):
|
if isinstance(using, str):
|
||||||
using = using.encode("utf-8")
|
using = using.encode("utf-8")
|
||||||
obj.bits = memoryview(using)
|
obj.bits = memoryview(using)
|
||||||
|
obj.save()
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ from ietf.person.factories import UserFactory, PersonFactory
|
||||||
class OidClientRecordFactory(factory.django.DjangoModelFactory):
|
class OidClientRecordFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = OidClientRecord
|
model = OidClientRecord
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
name = factory.Faker('company')
|
name = factory.Faker('company')
|
||||||
owner = factory.SubFactory(UserFactory)
|
owner = factory.SubFactory(UserFactory)
|
||||||
|
|
|
@ -26,6 +26,7 @@ def _fake_patent_info():
|
||||||
class IprDisclosureBaseFactory(factory.django.DjangoModelFactory):
|
class IprDisclosureBaseFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = IprDisclosureBase
|
model = IprDisclosureBase
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
by = factory.SubFactory('ietf.person.factories.PersonFactory')
|
by = factory.SubFactory('ietf.person.factories.PersonFactory')
|
||||||
compliant = True
|
compliant = True
|
||||||
|
|
|
@ -6,6 +6,7 @@ from ietf.liaisons.models import LiaisonStatement, LiaisonStatementEvent, Liaiso
|
||||||
class LiaisonStatementFactory(factory.django.DjangoModelFactory):
|
class LiaisonStatementFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = LiaisonStatement
|
model = LiaisonStatement
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
title = factory.Faker('sentence')
|
title = factory.Faker('sentence')
|
||||||
from_contact = factory.SubFactory('ietf.person.factories.EmailFactory')
|
from_contact = factory.SubFactory('ietf.person.factories.EmailFactory')
|
||||||
|
|
|
@ -23,6 +23,7 @@ from ietf.utils.text import xslugify
|
||||||
class MeetingFactory(factory.django.DjangoModelFactory):
|
class MeetingFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Meeting
|
model = Meeting
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
type_id = factory.Iterator(['ietf','interim'])
|
type_id = factory.Iterator(['ietf','interim'])
|
||||||
|
|
||||||
|
@ -103,6 +104,7 @@ class MeetingFactory(factory.django.DjangoModelFactory):
|
||||||
class SessionFactory(factory.django.DjangoModelFactory):
|
class SessionFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Session
|
model = Session
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
meeting = factory.SubFactory(MeetingFactory)
|
meeting = factory.SubFactory(MeetingFactory)
|
||||||
purpose_id = 'regular'
|
purpose_id = 'regular'
|
||||||
|
@ -156,6 +158,7 @@ class ScheduleFactory(factory.django.DjangoModelFactory):
|
||||||
class RoomFactory(factory.django.DjangoModelFactory):
|
class RoomFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Room
|
model = Room
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
meeting = factory.SubFactory(MeetingFactory)
|
meeting = factory.SubFactory(MeetingFactory)
|
||||||
name = factory.Faker('name')
|
name = factory.Faker('name')
|
||||||
|
@ -172,6 +175,7 @@ class RoomFactory(factory.django.DjangoModelFactory):
|
||||||
class TimeSlotFactory(factory.django.DjangoModelFactory):
|
class TimeSlotFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TimeSlot
|
model = TimeSlot
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
meeting = factory.SubFactory(MeetingFactory)
|
meeting = factory.SubFactory(MeetingFactory)
|
||||||
type_id = 'regular'
|
type_id = 'regular'
|
||||||
|
@ -225,6 +229,7 @@ class FloorPlanFactory(factory.django.DjangoModelFactory):
|
||||||
class SlideSubmissionFactory(factory.django.DjangoModelFactory):
|
class SlideSubmissionFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SlideSubmission
|
model = SlideSubmission
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
session = factory.SubFactory(SessionFactory)
|
session = factory.SubFactory(SessionFactory)
|
||||||
title = factory.Faker('sentence')
|
title = factory.Faker('sentence')
|
||||||
|
@ -238,6 +243,7 @@ class SlideSubmissionFactory(factory.django.DjangoModelFactory):
|
||||||
class ConstraintFactory(factory.django.DjangoModelFactory):
|
class ConstraintFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Constraint
|
model = Constraint
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
meeting = factory.SubFactory(MeetingFactory)
|
meeting = factory.SubFactory(MeetingFactory)
|
||||||
source = factory.SubFactory(GroupFactory)
|
source = factory.SubFactory(GroupFactory)
|
||||||
|
|
|
@ -84,6 +84,7 @@ def nomcom_kwargs_for_year(year=None, *args, **kwargs):
|
||||||
class NomComFactory(factory.django.DjangoModelFactory):
|
class NomComFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = NomCom
|
model = NomCom
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
group = factory.SubFactory(GroupFactory,type_id='nomcom')
|
group = factory.SubFactory(GroupFactory,type_id='nomcom')
|
||||||
|
|
||||||
|
@ -167,6 +168,7 @@ class NomineePositionFactory(factory.django.DjangoModelFactory):
|
||||||
class FeedbackFactory(factory.django.DjangoModelFactory):
|
class FeedbackFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Feedback
|
model = Feedback
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
nomcom = factory.SubFactory(NomComFactory)
|
nomcom = factory.SubFactory(NomComFactory)
|
||||||
subject = factory.Faker('sentence')
|
subject = factory.Faker('sentence')
|
||||||
|
@ -176,6 +178,7 @@ class FeedbackFactory(factory.django.DjangoModelFactory):
|
||||||
def comments(obj, create, extracted, **kwargs):
|
def comments(obj, create, extracted, **kwargs):
|
||||||
comment_text = Faker().paragraph()
|
comment_text = Faker().paragraph()
|
||||||
obj.comments = obj.nomcom.encrypt(comment_text)
|
obj.comments = obj.nomcom.encrypt(comment_text)
|
||||||
|
obj.save()
|
||||||
|
|
||||||
class TopicFactory(factory.django.DjangoModelFactory):
|
class TopicFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -46,6 +46,7 @@ class UserFactory(factory.django.DjangoModelFactory):
|
||||||
model = User
|
model = User
|
||||||
django_get_or_create = ('username',)
|
django_get_or_create = ('username',)
|
||||||
exclude = ['faker', ]
|
exclude = ['faker', ]
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
faker = factory.LazyFunction(random_faker)
|
faker = factory.LazyFunction(random_faker)
|
||||||
# normalize these i18n Unicode strings in the same way the database does
|
# normalize these i18n Unicode strings in the same way the database does
|
||||||
|
@ -55,13 +56,16 @@ class UserFactory(factory.django.DjangoModelFactory):
|
||||||
slugify(unidecode(u.last_name)), n, fake.domain_name())) # type: ignore
|
slugify(unidecode(u.last_name)), n, fake.domain_name())) # type: ignore
|
||||||
username = factory.LazyAttribute(lambda u: u.email)
|
username = factory.LazyAttribute(lambda u: u.email)
|
||||||
|
|
||||||
|
# Consider using PostGenerationMethodCall instead
|
||||||
@factory.post_generation
|
@factory.post_generation
|
||||||
def set_password(obj, create, extracted, **kwargs): # pylint: disable=no-self-argument
|
def set_password(obj, create, extracted, **kwargs): # pylint: disable=no-self-argument
|
||||||
obj.set_password( '%s+password' % obj.username ) # pylint: disable=no-value-for-parameter
|
obj.set_password( '%s+password' % obj.username ) # pylint: disable=no-value-for-parameter
|
||||||
|
obj.save()
|
||||||
|
|
||||||
class PersonFactory(factory.django.DjangoModelFactory):
|
class PersonFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Person
|
model = Person
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
user = factory.SubFactory(UserFactory)
|
user = factory.SubFactory(UserFactory)
|
||||||
name = factory.LazyAttribute(lambda p: normalize_name('%s %s'%(p.user.first_name, p.user.last_name)))
|
name = factory.LazyAttribute(lambda p: normalize_name('%s %s'%(p.user.first_name, p.user.last_name)))
|
||||||
|
@ -106,6 +110,7 @@ class PersonFactory(factory.django.DjangoModelFactory):
|
||||||
def delete_file(file):
|
def delete_file(file):
|
||||||
os.unlink(file)
|
os.unlink(file)
|
||||||
atexit.register(delete_file, photodst)
|
atexit.register(delete_file, photodst)
|
||||||
|
obj.save()
|
||||||
|
|
||||||
class AliasFactory(factory.django.DjangoModelFactory):
|
class AliasFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -11,6 +11,7 @@ from ietf.name.models import ReviewTypeName, ReviewResultName
|
||||||
class ReviewTeamSettingsFactory(factory.django.DjangoModelFactory):
|
class ReviewTeamSettingsFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ReviewTeamSettings
|
model = ReviewTeamSettings
|
||||||
|
skip_postgeneration_save = True
|
||||||
|
|
||||||
group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='review')
|
group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='review')
|
||||||
reviewer_queue_policy_id = 'RotateAlphabetically'
|
reviewer_queue_policy_id = 'RotateAlphabetically'
|
||||||
|
|
|
@ -30,7 +30,7 @@ django-widget-tweaks>=1.4.12
|
||||||
djlint>=1.0.0 # To auto-indent templates via "djlint --profile django --reformat"
|
djlint>=1.0.0 # To auto-indent templates via "djlint --profile django --reformat"
|
||||||
docutils>=0.18.1 # Used only by dbtemplates for RestructuredText
|
docutils>=0.18.1 # Used only by dbtemplates for RestructuredText
|
||||||
types-docutils>=0.18.1
|
types-docutils>=0.18.1
|
||||||
factory-boy>=3.2.1,<3.3
|
factory-boy>=3.3
|
||||||
github3.py>=3.2.0
|
github3.py>=3.2.0
|
||||||
gunicorn>=20.1.0
|
gunicorn>=20.1.0
|
||||||
hashids>=1.3.1
|
hashids>=1.3.1
|
||||||
|
|
Loading…
Reference in a new issue