From 17dc9c51b5c1896316b765baf62bb511a5306bac Mon Sep 17 00:00:00 2001 From: George Katsikas <giorgakis.katsikas@gmail.com> Date: Mon, 20 Nov 2023 13:02:41 +0100 Subject: [PATCH] add factories for all proceedings models --- scipost_django/proceedings/factories.py | 47 ++++++++++++++----- .../proceedings/tests/test_factories.py | 11 +++++ 2 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 scipost_django/proceedings/tests/test_factories.py diff --git a/scipost_django/proceedings/factories.py b/scipost_django/proceedings/factories.py index 361f7bfb3..1c8ffc8b1 100644 --- a/scipost_django/proceedings/factories.py +++ b/scipost_django/proceedings/factories.py @@ -5,40 +5,63 @@ __license__ = "AGPL v3" import random import factory -from journals.factories import IssueFactory +from colleges.factories import FellowshipFactory +from common.faker import fake + +from journals.factories import JournalIssueFactory from proceedings.models import Proceedings -import datetime class ProceedingsFactory(factory.django.DjangoModelFactory): class Meta: model = Proceedings - issue = factory.SubFactory(IssueFactory) + issue = factory.SubFactory(JournalIssueFactory) + minimum_referees = 2 event_name = factory.Faker("company") event_suffix = factory.Faker("company_suffix") event_description = factory.Faker("paragraph") event_start_date = factory.Faker("date_this_decade") event_end_date = factory.LazyAttribute( - lambda self: self.event_start_date - + datetime.timedelta( - seconds=random.randint(0, 60 * 60 * 24 * 365), + lambda self: fake.aware.date_between( + start_date=self.event_start_date, end_date="+1y" ) ) + logo = factory.django.ImageField() + picture = factory.django.ImageField() + picture_credit = factory.Faker("sentence") + cover_image = factory.django.ImageField() + submissions_open = factory.Faker("date_this_decade") submissions_close = factory.LazyAttribute( - lambda self: self.submissions_open - + datetime.timedelta( - seconds=random.randint(0, 60 * 60 * 24 * 365), + lambda self: fake.aware.date_between( + start_date=self.submissions_open, end_date="+1y" ) ) submissions_deadline = factory.LazyAttribute( - lambda self: self.submissions_close - + datetime.timedelta( - seconds=random.randint(0, 60 * 60 * 24 * 365), + lambda self: fake.aware.date_between( + start_date=self.submissions_close, end_date="+14d" ) ) preface_title = factory.Faker("sentence") preface_text = factory.Faker("paragraph") + + template_latex_tgz = factory.django.FileField() + # lead_fellow = factory.SubFactory("colleges.factories.SeniorFellowshipFactory") + + @factory.post_generation + def fellowships(self, create, extracted, **kwargs): + if not create: + return + if extracted: + for fellowship in extracted: + self.fellowships.add(fellowship) + else: + self.fellowships.add( + *FellowshipFactory.create_batch( + random.randint(1, 5), + college=self.issue.in_journal.college, + ) + ) diff --git a/scipost_django/proceedings/tests/test_factories.py b/scipost_django/proceedings/tests/test_factories.py new file mode 100644 index 000000000..4fee00063 --- /dev/null +++ b/scipost_django/proceedings/tests/test_factories.py @@ -0,0 +1,11 @@ +__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" +__license__ = "AGPL v3" + +from django.test import TestCase +from proceedings.factories import ProceedingsFactory + + +class TestProceedingsFactory(TestCase): + def test_can_create_proceedingss(self): + proceedings = ProceedingsFactory() + self.assertIsNotNone(proceedings) -- GitLab