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