From 743dbeaf1a9aed0dcc1acfe0d1aaeeec5ff572ac Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Thu, 28 Mar 2024 15:55:37 -0400
Subject: [PATCH] test: add factories for Notes & Users with Permissions

---
 program/tests/factories.py | 31 +++++++++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/program/tests/factories.py b/program/tests/factories.py
index 1ce0368c..738c6ddc 100644
--- a/program/tests/factories.py
+++ b/program/tests/factories.py
@@ -1,15 +1,17 @@
 from datetime import timedelta
 
-from factory import Sequence
+from factory import Sequence, post_generation
 from factory.django import DjangoModelFactory
 
-from django.contrib.auth.models import User
+from django.contrib.auth.models import Permission, User
+from django.db.models import QuerySet
 from django.utils.timezone import now
 from program.models import (
     FundingCategory,
     Host,
     Image,
     License,
+    Note,
     RRule,
     Schedule,
     Show,
@@ -26,6 +28,26 @@ class CommonUserFactory(DjangoModelFactory):
     username = Sequence(lambda n: "common_%d" % n)
 
 
+class UserWithPermissionsFactory(DjangoModelFactory):
+    class Meta:
+        model = User
+
+    username = Sequence(lambda n: "user_with_perm%d" % n)
+
+    @post_generation
+    def user_permissions(self, create, extracted, **kwargs):
+        if not create:
+            return
+
+        if extracted:
+            if isinstance(extracted, Permission):
+                self.user_permissions.add(extracted)
+
+            if isinstance(extracted, QuerySet):
+                for permission in extracted:
+                    self.user_permissions.add(permission)
+
+
 class HostFactory(DjangoModelFactory):
     class Meta:
         model = Host
@@ -90,3 +112,8 @@ class LicenseFactory(DjangoModelFactory):
 
     identifier = "pd"
     name = "Public Domain"
+
+
+class NoteFactory(DjangoModelFactory):
+    class Meta:
+        model = Note
-- 
GitLab