From aa908800733d4b9827b88a60662fa70cd116fd2d Mon Sep 17 00:00:00 2001
From: Matthieu Fesselier <matthieu.fesselier@gmail.com>
Date: Fri, 11 Jan 2019 17:46:23 +0700
Subject: [PATCH] feature: factories

---
 djangoldp_notification/factories.py             | 17 +++++++++++++++++
 .../management/commands/__init__.py             |  0
 .../management/commands/mock_notification.py    | 14 ++++++++++++++
 setup.cfg                                       |  4 ++++
 4 files changed, 35 insertions(+)
 create mode 100644 djangoldp_notification/factories.py
 create mode 100644 djangoldp_notification/management/commands/__init__.py
 create mode 100644 djangoldp_notification/management/commands/mock_notification.py

diff --git a/djangoldp_notification/factories.py b/djangoldp_notification/factories.py
new file mode 100644
index 0000000..36329c4
--- /dev/null
+++ b/djangoldp_notification/factories.py
@@ -0,0 +1,17 @@
+import factory
+from .models import Notification
+from django.contrib.auth.models import User
+from django.db.models.signals import post_save
+
+@factory.django.mute_signals(post_save)
+class NotificationFactory(factory.django.DjangoModelFactory):
+    class Meta:
+        model = Notification
+
+    type = factory.Faker('text', max_nb_chars=50)
+    summary = factory.Faker('paragraph', nb_sentences=3, variable_nb_sentences=True)
+    author_user = factory.Iterator(User.objects.all())
+    user = factory.Iterator(User.objects.all())
+    date = factory.Faker('past_datetime')
+    read = factory.Faker('boolean')
+    object = factory.Faker('url')
\ No newline at end of file
diff --git a/djangoldp_notification/management/commands/__init__.py b/djangoldp_notification/management/commands/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/djangoldp_notification/management/commands/mock_notification.py b/djangoldp_notification/management/commands/mock_notification.py
new file mode 100644
index 0000000..d534a2e
--- /dev/null
+++ b/djangoldp_notification/management/commands/mock_notification.py
@@ -0,0 +1,14 @@
+from django.core.management.base import BaseCommand, CommandError
+from djangoldp_notification.factories import NotificationFactory
+
+class Command(BaseCommand):
+    help = 'Mock data'
+
+    def add_arguments(self, parser):
+        parser.add_argument('--size', type=int, default=0, help='Number of notifications to create')
+
+    def handle(self, *args, **options):
+        for i in range(0, options['size']):
+            notif = NotificationFactory.create()
+
+        self.stdout.write(self.style.SUCCESS('Successful data mock install'))
diff --git a/setup.cfg b/setup.cfg
index d875afb..521bd0c 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -12,6 +12,10 @@ packages = find:
 install_requires =
     djangoldp~=0.5
 
+[options.extras_require]
+dev =
+    factory_boy>=2.11.0
+
 [semantic_release]
 version_source = tag
 version_variable = djangoldp_notification/__init__.py:__version__
-- 
GitLab