Add factories for events (there might be a factoryboy bug for Xelnor in here)
authorCorentin Wallez <corentin@wallez.net>
Sat, 30 Mar 2013 01:38:13 +0000 (02:38 +0100)
committerCorentin Wallez <corentin@wallez.net>
Sat, 30 Mar 2013 01:38:13 +0000 (02:38 +0100)
xnet/events/factories.py [new file with mode: 0644]

diff --git a/xnet/events/factories.py b/xnet/events/factories.py
new file mode 100644 (file)
index 0000000..63ac47a
--- /dev/null
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+from django.contrib.webdesign import lorem_ipsum
+
+import factory
+
+import datetime
+import django.utils.timezone as timezone
+
+from xnet.accounts import factories as accounts_factories
+from xnet.groups import factories as groups_factories
+
+from . import models
+
+
+class EventFactory(factory.DjangoModelFactory):
+    FACTORY_FOR = models.Event
+
+    short = factory.Sequence(lambda n: u"Event n°%s" % n)
+    main_description = u"Super description d'Event"
+    group = factory.SubFactory(groups_factories.XGroupFactory)
+    creator = factory.SubFactory(accounts_factories.AccountFactory,
+        memberships=factory.RelatedFactory(groups_factories.MembershipFactory, 'user',
+            group=factory.SelfAttribute('...group')))
+
+    simple = False
+
+    registration_begin = factory.LazyAttribute(
+            lambda a: timezone.now() - datetime.timedelta(0, 0, 0, -2))
+    registration_end = factory.LazyAttribute(
+            lambda a: timezone.now() - datetime.timedelta(0, 0, 0, 5))
+    notification_recipient = models.Event.NOTIFICATION_RECIPIENT_CREATOR
+    show_registered = True
+    allow_non_members = True
+    allow_guests = True
+    registration_limit = 500
+
+    start_date = factory.LazyAttribute(
+            lambda a: timezone.now() - datetime.timedelta(0, 0, 0, 5))
+    end_date = factory.LazyAttribute(
+            lambda a: timezone.now() - datetime.timedelta(0, 0, 0, 7))
+
+
+class EventPartFactory(factory.DjangoModelFactory):
+    FACTORY_FOR = models.EventPart
+
+    name = factory.Sequence(lambda n: u"EventPart n°%s" % n)
+    description = u"Super description d'EventPart"
+    event = factory.SubFactory(EventFactory)
+    registration_limit = 250
+    main = False
+
+
+class PriceOptionFactory(factory.DjangoModelFactory):
+    FACTORY_FOR = models.PriceOption
+
+    name = factory.Sequence(lambda n: u"PriceOption n°%s" % n)
+    amount = 1337
+    event_part = factory.SubFactory(EventPartFactory)
+
+
+class RegistrationFactory(factory.DjangoModelFactory):
+    FACTORY_FOR = models.Registration
+
+    user = factory.SubFactory(accounts_factories.AccountFactory)
+    dn_event = factory.SelfAttribute('option.event')
+    option = factory.SubFactory(PriceOptionFactory)
+    date_registered = factory.LazyAttribute(
+            lambda a: timezone.now() - datetime.timedelta(0, 0, 0, 1))