Skip to content

Commit b736dd5

Browse files
committed
Add tests for EditTeamMemberAPIView
1 parent cbcbb35 commit b736dd5

File tree

1 file changed

+69
-1
lines changed

1 file changed

+69
-1
lines changed

django/thunderstore/api/cyberstorm/tests/test_team.py

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
import json
2+
13
import pytest
24
from django.contrib.auth import get_user_model
35
from rest_framework.test import APIClient
46

57
from thunderstore.account.factories import ServiceAccountFactory
68
from thunderstore.core.types import UserType
79
from thunderstore.repository.factories import TeamFactory, TeamMemberFactory
8-
from thunderstore.repository.models.team import Team
10+
from thunderstore.repository.models.team import Team, TeamMember
911

1012
User = get_user_model()
1113

@@ -223,3 +225,69 @@ def test_team_service_accounts_api_view__for_member__sorts_results(
223225
assert result[0]["name"] == alice.first_name
224226
assert result[1]["name"] == bob.first_name
225227
assert result[2]["name"] == charlie.first_name
228+
229+
230+
@pytest.mark.django_db
231+
def test_team_members_edit__success(
232+
api_client: APIClient,
233+
user: UserType,
234+
team: Team,
235+
):
236+
TeamMemberFactory(team=team, user=user, role="owner")
237+
api_client.force_authenticate(user)
238+
just_a_member = TeamMemberFactory(team=team, role="owner")
239+
240+
response = api_client.post(
241+
f"/api/cyberstorm/team/{team.name}/members/edit/",
242+
json.dumps({"username": just_a_member.user.username, "role": "member"}),
243+
content_type="application/json",
244+
)
245+
246+
response_json = response.json()
247+
assert response.status_code == 200
248+
assert response_json["team_name"] == team.name
249+
assert response_json["username"] == just_a_member.user.username
250+
assert response_json["role"] == "member"
251+
assert TeamMember.objects.get(pk=just_a_member.pk).role == "member"
252+
253+
254+
@pytest.mark.django_db
255+
def test_team_members_edit__failure__user_not_in_team(
256+
api_client: APIClient,
257+
user: UserType,
258+
team: Team,
259+
):
260+
TeamMemberFactory(team=team, user=user, role="owner")
261+
api_client.force_authenticate(user)
262+
another_team = TeamFactory()
263+
member_in_another_team = TeamMemberFactory(team=another_team, role="owner")
264+
265+
response = api_client.post(
266+
f"/api/cyberstorm/team/{team.name}/members/edit/",
267+
json.dumps(
268+
{"username": member_in_another_team.user.username, "role": "member"}
269+
),
270+
content_type="application/json",
271+
)
272+
273+
assert response.status_code == 404
274+
response_json = response.json()
275+
assert response_json["detail"] == "Not found."
276+
277+
278+
@pytest.mark.django_db
279+
def test_team_members_edit__failure__team_doesnt_exist(
280+
api_client: APIClient,
281+
user: UserType,
282+
):
283+
api_client.force_authenticate(user)
284+
285+
response = api_client.post(
286+
f"/api/cyberstorm/team/GhostTeam/members/edit/",
287+
json.dumps({"username": user.username, "role": "member"}),
288+
content_type="application/json",
289+
)
290+
291+
assert response.status_code == 404
292+
response_json = response.json()
293+
assert response_json["detail"] == "Not found."

0 commit comments

Comments
 (0)