From 00e96d42e6d2d92ba3ca02e88d07ce10edcb0a24 Mon Sep 17 00:00:00 2001
From: George Katsikas <giorgakis.katsikas@gmail.com>
Date: Fri, 17 Nov 2023 13:49:12 +0100
Subject: [PATCH] add factories for all news models

---
 scipost_django/news/factories.py            | 24 ++++++++++++++++++++-
 scipost_django/news/tests/test_factories.py | 18 ++++++++++++++++
 2 files changed, 41 insertions(+), 1 deletion(-)
 create mode 100644 scipost_django/news/tests/test_factories.py

diff --git a/scipost_django/news/factories.py b/scipost_django/news/factories.py
index 6a9a1b6b8..6b2f5a211 100644
--- a/scipost_django/news/factories.py
+++ b/scipost_django/news/factories.py
@@ -4,7 +4,29 @@ __license__ = "AGPL v3"
 
 import factory
 
-from .models import NewsItem
+from .models import NewsItem, NewsLetter
+
+
+class NewsLetterFactory(factory.django.DjangoModelFactory):
+    class Meta:
+        model = NewsLetter
+
+    date = factory.Faker("date_this_year")
+    intro = factory.Faker("paragraph", nb_sentences=2)
+    closing = factory.Faker("paragraph", nb_sentences=2)
+    published = True
+
+    # Create NewsItems for this NewsLetter linking them through NewsLetterNewsItemsTable
+    @factory.post_generation
+    def news_items(self, create, extracted, **kwargs):
+        if not create:
+            return
+
+        if extracted:
+            for news_item in extracted:
+                self.news_items.add(news_item)
+
+        self.news_items = NewsItemFactory.create_batch(3)
 
 
 class NewsItemFactory(factory.django.DjangoModelFactory):
diff --git a/scipost_django/news/tests/test_factories.py b/scipost_django/news/tests/test_factories.py
new file mode 100644
index 000000000..f175a91fb
--- /dev/null
+++ b/scipost_django/news/tests/test_factories.py
@@ -0,0 +1,18 @@
+__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
+__license__ = "AGPL v3"
+
+
+from django.test import TestCase
+from ..factories import NewsItemFactory, NewsLetterFactory
+
+
+class TestNewsLetterFactory(TestCase):
+    def test_can_create_news_letters(self):
+        news_letter = NewsLetterFactory()
+        self.assertIsNotNone(news_letter)
+
+
+class TestNewsItemFactory(TestCase):
+    def test_can_create_news_items(self):
+        news_item = NewsItemFactory()
+        self.assertIsNotNone(news_item)
-- 
GitLab