From 73dc6a436c6b9a41afea20a8dfa45643fb0e6145 Mon Sep 17 00:00:00 2001 From: George Katsikas <giorgakis.katsikas@gmail.com> Date: Wed, 20 Mar 2024 12:17:50 +0100 Subject: [PATCH] add factories for all helpdesk models --- scipost_django/helpdesk/factories.py | 49 +++++++++++++++++++ scipost_django/helpdesk/tests/__init__.py | 0 .../helpdesk/tests/test_factories.py | 17 +++++++ 3 files changed, 66 insertions(+) create mode 100644 scipost_django/helpdesk/factories.py create mode 100644 scipost_django/helpdesk/tests/__init__.py create mode 100644 scipost_django/helpdesk/tests/test_factories.py diff --git a/scipost_django/helpdesk/factories.py b/scipost_django/helpdesk/factories.py new file mode 100644 index 000000000..74f51b5e3 --- /dev/null +++ b/scipost_django/helpdesk/factories.py @@ -0,0 +1,49 @@ +__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" +__license__ = "AGPL v3" + +import factory +from django.utils.text import slugify +from django.utils.timezone import timedelta + +from common.faker import LazyAwareDate, LazyRandEnum, fake + +from .models import * + + +class QueueFactory(factory.django.DjangoModelFactory): + class Meta: + model = Queue + + name = factory.Faker("word") + slug = factory.LazyAttribute(lambda self: slugify(self.name.lower())) + description = factory.Faker("text") + managing_group = factory.SubFactory("scipost.factories.GroupFactory") + parent_queue = None + + @factory.post_generation + def response_groups(self, create, extracted, **kwargs): + if not create: + return + if extracted: + for group in extracted: + self.response_groups.add(group) + + +class TicketFactory(factory.django.DjangoModelFactory): + class Meta: + model = Ticket + + queue = factory.SubFactory(QueueFactory) + title = factory.Faker("sentence") + description = factory.Faker("text") + publicly_visible = False + defined_on = LazyAwareDate("date_time_this_decade") + defined_by = factory.SubFactory("scipost.factories.UserFactory") + deadline = factory.LazyAttribute( + lambda self: fake.aware.date_time_between( + start_date=self.defined_on, end_date="+1y" + ) + ) + priority = LazyRandEnum(TICKET_PRIORITIES) + status = LazyRandEnum(TICKET_STATUSES) + assigned_to = factory.SubFactory("scipost.factories.UserFactory") diff --git a/scipost_django/helpdesk/tests/__init__.py b/scipost_django/helpdesk/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/scipost_django/helpdesk/tests/test_factories.py b/scipost_django/helpdesk/tests/test_factories.py new file mode 100644 index 000000000..83c1f94e8 --- /dev/null +++ b/scipost_django/helpdesk/tests/test_factories.py @@ -0,0 +1,17 @@ +__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" +__license__ = "AGPL v3" + +from django.test import TestCase +from ..factories import * + + +class TestQueueFactory(TestCase): + def test_can_create_queues(self): + queue = QueueFactory() + self.assertIsNotNone(queue) + + +class TestTicketFactory(TestCase): + def test_can_create_tickets(self): + ticket = TicketFactory() + self.assertIsNotNone(ticket) -- GitLab