| 1 | # -*- coding: utf-8 -*- |
| 2 | from django.contrib.webdesign import lorem_ipsum |
| 3 | |
| 4 | import factory |
| 5 | |
| 6 | from . import models |
| 7 | |
| 8 | |
| 9 | class XGroupFactory(factory.DjangoModelFactory): |
| 10 | FACTORY_FOR = models.XGroup |
| 11 | |
| 12 | name = factory.Sequence(lambda n: u"Groupe n°%s" % n) |
| 13 | short = factory.Sequence(lambda n: u"Groupe%s" % n) |
| 14 | kind = factory.InfiniteIterator(k[0] for k in models.XGroup.KIND_CHOICES) |
| 15 | domain = models.XGroup.DOMAIN_REGION |
| 16 | web = u"http://google.fr" |
| 17 | description = factory.LazyAttribute(lambda _: lorem_ipsum.paragraph()) |
| 18 | |
| 19 | |
| 20 | class AccountFactory(factory.DjangoModelFactory): |
| 21 | FACTORY_FOR = models.Account |
| 22 | |
| 23 | username = factory.Sequence('mr_robinson{0}'.format) |
| 24 | first_name = u"John" |
| 25 | last_name = factory.Sequence(lambda n: u"D%se" % ((n % 10) * u"o"), type=int) |
| 26 | password = None |
| 27 | is_staff = True |
| 28 | |
| 29 | @classmethod |
| 30 | def _prepare(cls, create, **kwargs): |
| 31 | password = kwargs.pop('password', None) |
| 32 | user = super(AccountFactory, cls)._prepare(create, **kwargs) |
| 33 | if password is not None: |
| 34 | user.set_password(password) |
| 35 | if create: |
| 36 | user.save() |
| 37 | return user |
| 38 | |
| 39 | |
| 40 | class SuperAccountFactory(AccountFactory): |
| 41 | is_superuser = True |
| 42 | |
| 43 | |
| 44 | class MembershipFactory(factory.DjangoModelFactory): |
| 45 | FACTORY_FOR = models.Membership |
| 46 | |
| 47 | xgroup = factory.SubFactory(XGroupFactory) |
| 48 | xuser = factory.SubFactory(AccountFactory) |
| 49 | state = models.MembershipWorkflow.states.enabled |