forked from DGNum/gestioCOF
cof -- Add helpers to test cof views.
This commit is contained in:
parent
44eee9be38
commit
776ff28141
5 changed files with 369 additions and 0 deletions
0
gestioncof/tests/__init__.py
Normal file
0
gestioncof/tests/__init__.py
Normal file
24
gestioncof/tests/testcases.py
Normal file
24
gestioncof/tests/testcases.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
from shared.tests.testcases import ViewTestCaseMixin as BaseViewTestCaseMixin
|
||||
|
||||
from .utils import create_user, create_member, create_staff
|
||||
|
||||
|
||||
class ViewTestCaseMixin(BaseViewTestCaseMixin):
|
||||
"""
|
||||
TestCase extension to ease testing of cof views.
|
||||
|
||||
Most information can be found in the base parent class doc.
|
||||
This class performs some changes to users management, detailed below.
|
||||
|
||||
During setup, three users are created:
|
||||
- 'user': a basic user without any permission,
|
||||
- 'member': (profile.is_cof is True),
|
||||
- 'staff': (profile.is_cof is True) && (profile.is_buro is True).
|
||||
"""
|
||||
|
||||
def get_users_base(self):
|
||||
return {
|
||||
'user': create_user('user'),
|
||||
'member': create_member('member'),
|
||||
'staff': create_staff('staff'),
|
||||
}
|
51
gestioncof/tests/utils.py
Normal file
51
gestioncof/tests/utils.py
Normal file
|
@ -0,0 +1,51 @@
|
|||
from django.contrib.auth import get_user_model
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
def _create_user(username, is_cof=False, is_staff=False, attrs=None):
|
||||
if attrs is None:
|
||||
attrs = {}
|
||||
|
||||
password = attrs.pop('password', username)
|
||||
|
||||
user_keys = ['first_name', 'last_name', 'email', 'is_staff']
|
||||
user_attrs = {k: v for k, v in attrs.items() if k in user_keys}
|
||||
|
||||
profile_keys = [
|
||||
'is_cof', 'login_clipper', 'phone', 'occupation', 'departement',
|
||||
'type_cotiz', 'mailing_cof', 'mailing_bda', 'mailing_bda_revente',
|
||||
'comments', 'is_buro', 'petit_cours_accept',
|
||||
'petit_cours_remarques',
|
||||
]
|
||||
profile_attrs = {k: v for k, v in attrs.items() if k in profile_keys}
|
||||
|
||||
if is_cof:
|
||||
profile_attrs['is_cof'] = True
|
||||
|
||||
if is_staff:
|
||||
# At the moment, admin is accessible by COF staff.
|
||||
user_attrs['is_staff'] = True
|
||||
profile_attrs['is_buro'] = True
|
||||
|
||||
user = User(username=username, **user_attrs)
|
||||
user.set_password(password)
|
||||
user.save()
|
||||
|
||||
for k, v in profile_attrs.items():
|
||||
setattr(user.profile, k, v)
|
||||
user.profile.save()
|
||||
|
||||
return user
|
||||
|
||||
|
||||
def create_user(username, attrs=None):
|
||||
return _create_user(username, attrs=attrs)
|
||||
|
||||
|
||||
def create_member(username, attrs=None):
|
||||
return _create_user(username, is_cof=True, attrs=attrs)
|
||||
|
||||
|
||||
def create_staff(username, attrs=None):
|
||||
return _create_user(username, is_cof=True, is_staff=True, attrs=attrs)
|
Loading…
Add table
Add a link
Reference in a new issue