From c2da97f636358fc4304e0b048fedd7de9155b72d Mon Sep 17 00:00:00 2001
From: George Katsikas <giorgakis.katsikas@gmail.com>
Date: Tue, 14 Nov 2023 13:05:42 +0100
Subject: [PATCH] add factories for all blog models

---
 scipost_django/blog/factories.py            | 34 +++++++++++++++++++++
 scipost_django/blog/tests.py                |  7 -----
 scipost_django/blog/tests/__init__.py       |  0
 scipost_django/blog/tests/test_factories.py | 17 +++++++++++
 4 files changed, 51 insertions(+), 7 deletions(-)
 create mode 100644 scipost_django/blog/factories.py
 delete mode 100644 scipost_django/blog/tests.py
 create mode 100644 scipost_django/blog/tests/__init__.py
 create mode 100644 scipost_django/blog/tests/test_factories.py

diff --git a/scipost_django/blog/factories.py b/scipost_django/blog/factories.py
new file mode 100644
index 000000000..a5138dfaf
--- /dev/null
+++ b/scipost_django/blog/factories.py
@@ -0,0 +1,34 @@
+__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
+__license__ = "AGPL v3"
+
+from django.utils.text import slugify
+import factory
+
+from common.faker import LazyAwareDate, LazyRandEnum
+from scipost.factories import UserFactory
+
+from .models import BlogPost, Category
+
+
+class CategoryFactory(factory.django.DjangoModelFactory):
+    class Meta:
+        model = Category
+
+    title = factory.Faker("word")
+    slug = factory.LazyAttribute(lambda self: slugify(self.title))
+    description = factory.Faker("paragraph")
+
+
+class BlogPostFactory(factory.django.DjangoModelFactory):
+    class Meta:
+        model = BlogPost
+
+    status = LazyRandEnum(BlogPost.STATUS_CHOICES)
+    title = factory.Faker("sentence")
+    slug = factory.LazyAttribute(lambda self: slugify(self.title))
+    blurb = factory.Faker("paragraph")
+    blurb_image = factory.django.ImageField()
+    blurb_image_caption = factory.Faker("paragraph")
+    body = factory.Faker("paragraphs", nb=3)
+    date_posted = LazyAwareDate("date_this_decade")
+    posted_by = factory.SubFactory(UserFactory)
diff --git a/scipost_django/blog/tests.py b/scipost_django/blog/tests.py
deleted file mode 100644
index ddef03c4d..000000000
--- a/scipost_django/blog/tests.py
+++ /dev/null
@@ -1,7 +0,0 @@
-__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
-__license__ = "AGPL v3"
-
-
-from django.test import TestCase
-
-# Create your tests here.
diff --git a/scipost_django/blog/tests/__init__.py b/scipost_django/blog/tests/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/scipost_django/blog/tests/test_factories.py b/scipost_django/blog/tests/test_factories.py
new file mode 100644
index 000000000..e9733db11
--- /dev/null
+++ b/scipost_django/blog/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 BlogPostFactory, CategoryFactory
+
+
+class TestCategoryFactory(TestCase):
+    def test_can_create_categories(self):
+        category = CategoryFactory()
+        self.assertIsNotNone(category)
+
+
+class TestBlogPostFactory(TestCase):
+    def test_can_create_blog_posts(self):
+        blog_post = BlogPostFactory()
+        self.assertIsNotNone(blog_post)
-- 
GitLab