Skip to content

Commit 05153fd

Browse files
renzonrenzon
authored andcommitted
Refactored topic tests for user levels
part of #2611
1 parent 6e41f35 commit 05153fd

File tree

4 files changed

+182
-134
lines changed

4 files changed

+182
-134
lines changed

conftest.py

Lines changed: 110 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,47 +12,151 @@ def fake():
1212

1313

1414
@pytest.fixture
15-
def client_with_user(client, django_user_model, logged_user):
15+
def client_with_user(client, logged_user):
1616
client.force_login(logged_user)
1717
return client
1818

1919

20+
_all_roles = set('data_scientist lead client webdev member'.split())
21+
_advanced_roles = {'member'}
22+
_level_one_roles = set('client webdev member'.split())
23+
_level_two_roles = set('webdev member'.split())
24+
25+
2026
@pytest.fixture
2127
def logged_user(django_user_model):
22-
logged_user = baker.make(django_user_model)
28+
logged_user = baker.make(django_user_model, is_superuser=False)
2329
logged_user.email = logged_user.email.lower()
2430
logged_user.save()
2531
return logged_user
2632

2733

34+
@pytest.fixture(params=_all_roles)
35+
@pytest.mark.django_db
36+
def pythonpro_role(logged_user, request):
37+
role = request.param
38+
assign_role(logged_user, role)
39+
return logged_user
40+
41+
42+
@pytest.fixture
43+
def client_with_all_roles(client, pythonpro_role):
44+
client.force_login(pythonpro_role)
45+
return client
46+
47+
48+
@pytest.fixture(params=_advanced_roles)
49+
@pytest.mark.django_db
50+
def advanced_role(logged_user, request):
51+
role = request.param
52+
assign_role(logged_user, role)
53+
return logged_user
54+
55+
56+
@pytest.fixture
57+
def client_with_advanced_roles(client, advanced_role):
58+
client.force_login(advanced_role)
59+
return client
60+
61+
62+
@pytest.fixture(params=_all_roles - _advanced_roles)
63+
@pytest.mark.django_db
64+
def not_advanced_role(logged_user, request):
65+
role = request.param
66+
assign_role(logged_user, role)
67+
return logged_user
68+
69+
70+
@pytest.fixture
71+
def client_with_not_advanced_roles(client, not_advanced_role):
72+
client.force_login(not_advanced_role)
73+
return client
74+
75+
76+
@pytest.fixture(params=_level_one_roles)
77+
@pytest.mark.django_db
78+
def level_one_role(logged_user, request):
79+
role = request.param
80+
assign_role(logged_user, role)
81+
return logged_user
82+
83+
84+
@pytest.fixture
85+
def client_with_level_one_roles(client, level_one_role):
86+
client.force_login(level_one_role)
87+
return client
88+
89+
90+
@pytest.fixture(params=_all_roles - _level_one_roles)
91+
@pytest.mark.django_db
92+
def not_level_one_role(logged_user, request):
93+
role = request.param
94+
assign_role(logged_user, role)
95+
return logged_user
96+
97+
98+
@pytest.fixture
99+
def client_with_not_level_one_roles(client, not_level_one_role):
100+
client.force_login(not_level_one_role)
101+
return client
102+
103+
104+
@pytest.fixture(params=_level_two_roles)
105+
@pytest.mark.django_db
106+
def level_two_role(logged_user, request):
107+
role = request.param
108+
assign_role(logged_user, role)
109+
return logged_user
110+
111+
112+
@pytest.fixture
113+
def client_with_level_two_roles(client, level_two_role):
114+
client.force_login(level_two_role)
115+
return client
116+
117+
118+
@pytest.fixture(params=_all_roles - _level_two_roles)
119+
@pytest.mark.django_db
120+
def not_level_two_role(logged_user, request):
121+
role = request.param
122+
assign_role(logged_user, role)
123+
return logged_user
124+
125+
126+
@pytest.fixture
127+
def client_with_not_level_two_roles(client, not_level_two_role):
128+
client.force_login(not_level_two_role)
129+
return client
130+
131+
28132
@pytest.fixture
29133
def cohort(db):
30134
return baker.make(Cohort)
31135

32136

33137
@pytest.fixture
34-
def client_with_lead(client, django_user_model, logged_user):
138+
def client_with_lead(client, logged_user):
35139
assign_role(logged_user, 'lead')
36140
client.force_login(logged_user)
37141
return client
38142

39143

40144
@pytest.fixture
41-
def client_with_webdev(client, django_user_model, logged_user):
145+
def client_with_webdev(client, logged_user):
42146
assign_role(logged_user, 'webdev')
43147
client.force_login(logged_user)
44148
return client
45149

46150

47151
@pytest.fixture
48-
def client_with_member(client, django_user_model, logged_user):
152+
def client_with_member(client, logged_user):
49153
assign_role(logged_user, 'member')
50154
client.force_login(logged_user)
51155
return client
52156

53157

54158
@pytest.fixture
55-
def client_with_client(client, django_user_model, logged_user):
159+
def client_with_client(client, logged_user):
56160
assign_role(logged_user, 'client')
57161
client.force_login(logged_user)
58162
return client

pythonpro/modules/permissions.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
_LEAD_MODULES = {'python-birds'}
1313
_CLIENT_MODULES = {'python-birds', 'pytools'}
1414
_WEBDEV_MODULES = {'python-birds', 'pytools', 'django'}
15+
_BOOTCAMPER_MODULES = {'python-birds', 'pytools', 'django', 'entrevistas-tecnicas'}
1516

1617

1718
@register_object_checker()
@@ -27,7 +28,3 @@ def access_content(role, user, content: Content) -> bool:
2728
return True
2829

2930
return False
30-
31-
32-
def is_client_content(content: Content):
33-
return content.module_slug() in _CLIENT_MODULES

0 commit comments

Comments
 (0)