Passed
Push — main ( 04ae47...d5a1e8 )
by Jochen
04:23
created

team_support()   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 1
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
"""
2
:Copyright: 2006-2021 Jochen Kupperschmidt
3
:License: Revised BSD (see `LICENSE` file for details)
4
"""
5
6
import pytest
7
8
from byceps.services.orga import service as orga_service
9
from byceps.services.orga_team import service as orga_team_service
10
11
12
@pytest.fixture(scope='module')
13
def team_support(party):
14
    team = orga_team_service.create_team(party.id, 'Support')
15
    yield team
16
    orga_team_service.delete_team(team.id)
17
18
19
@pytest.fixture(scope='module')
20
def team_tournaments(party):
21
    team = orga_team_service.create_team(party.id, 'Tournaments')
22
    yield team
23
    orga_team_service.delete_team(team.id)
24
25
26
def test_membership_create_form(orga_team_admin_client, team_tournaments):
27
    team = team_tournaments
28
    url = f'/admin/orga_teams/teams/{team.id}/memberships/create'
29
    response = orga_team_admin_client.get(url)
30
    assert response.status_code == 200
31
32
33
def test_membership_create(
34
    orga_team_admin_client, party, team_tournaments, make_user
35
):
36
    user = make_user('OrgaTeamCandidate1')
37
    team = team_tournaments
38
    orga_flag = orga_service.add_orga_flag(party.brand_id, user.id, user.id)
39
40
    assert orga_team_service.count_memberships_for_party(party.id) == 0
41
42
    url = f'/admin/orga_teams/teams/{team.id}/memberships'
43
    form_data = {
44
        'user_id': str(user.id),
45
        'duties': 'Tricky Towers',
46
    }
47
    response = orga_team_admin_client.post(url, data=form_data)
48
    assert response.status_code == 302
49
50
    memberships = orga_team_service.get_memberships_for_party(party.id)
51
    assert len(memberships) == 1
52
53
    membership = list(memberships)[0]
54
    assert membership.orga_team_id == team.id
55
    assert membership.user_id == user.id
56
    assert membership.duties == 'Tricky Towers'
57
58
    # Clean up.
59
    orga_team_service.delete_membership(membership.id)
60
    orga_service.remove_orga_flag(party.brand_id, user.id, user.id)
61
62
63
def test_membership_update_form(
64
    orga_team_admin_client, party, team_tournaments, make_user
65
):
66
    user = make_user('OrgaTeamCandidate2')
67
    team = team_tournaments
68
    membership = orga_team_service.create_membership(team.id, user.id, 'PUBG')
69
70
    url = f'/admin/orga_teams/memberships/{membership.id}/update'
71
    response = orga_team_admin_client.get(url)
72
    assert response.status_code == 200
73
74
    # Clean up.
75
    orga_team_service.delete_membership(membership.id)
76
77
78
def test_membership_update(
79
    orga_team_admin_client, party, team_support, team_tournaments, make_user
80
):
81
    user = make_user('OrgaTeamCandidate3')
82
    team1 = team_support
83
    team2 = team_tournaments
84
    membership = orga_team_service.create_membership(team1.id, user.id, 'all')
85
86
    assert membership.orga_team_id == team1.id
87
    assert membership.duties == 'all'
88
89
    url = f'/admin/orga_teams/memberships/{membership.id}'
90
    form_data = {
91
        'orga_team_id': str(team2.id),
92
        'duties': 'Overwatch',
93
    }
94
    response = orga_team_admin_client.post(url, data=form_data)
95
    assert response.status_code == 302
96
97
    membership = orga_team_service.find_membership(membership.id)
98
    assert membership.orga_team_id == team2.id
99
    assert membership.duties == 'Overwatch'
100
101
    # Clean up.
102
    orga_team_service.delete_membership(membership.id)
103
104
105
def test_membership_remove(
106
    orga_team_admin_client, party, team_tournaments, make_user
107
):
108
    user = make_user('OrgaTeamCandidate4')
109
    team = team_tournaments
110
    membership = orga_team_service.create_membership(team.id, user.id, 'CS:GO')
111
112
    url = f'/admin/orga_teams/memberships/{membership.id}'
113
    response = orga_team_admin_client.delete(url)
114
    assert response.status_code == 204
115
116
    # Clean up.
117
    orga_team_service.delete_membership(membership.id)
118