Coverage for src/tests/modules/teams/repositories/test_team_db_repository.py: 100%
46 statements
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1"""Module for testing the team db repository."""
3from dataclasses import replace
5import pytest
7from kwai_bc_teams.repositories.team_db_repository import TeamDbRepository
8from kwai_bc_teams.repositories.team_repository import TeamNotFoundException
9from kwai_core.db.database import Database
12pytestmark = pytest.mark.db
15async def test_create_team(make_team_in_db):
16 """Test creating a team in the database."""
17 team = await make_team_in_db()
18 assert team is not None, "There should be a team in the database."
21async def test_get_team(database: Database, make_team_in_db):
22 """Test getting a team from the database."""
23 team = await make_team_in_db()
24 repo = TeamDbRepository(database)
25 team = await repo.get(repo.create_query().filter_by_id(team.id))
26 assert team is not None, "There should be a team in the database."
29async def test_get_all_teams(database: Database):
30 """Test getting all teams in the database."""
31 teams_iterator = TeamDbRepository(database).get_all()
32 assert teams_iterator is not None, "There should be a team in the database."
33 assert await anext(teams_iterator) is not None, (
34 "There should be a team in the database."
35 )
38async def test_delete_team(database: Database, make_team_in_db):
39 """Test deleting a team in the database."""
40 team_repo = TeamDbRepository(database)
41 team = await make_team_in_db()
42 await team_repo.delete(team)
44 with pytest.raises(TeamNotFoundException):
45 await team_repo.get(team_repo.create_query().filter_by_id(team.id))
48async def test_update_team(database: Database, make_team_in_db):
49 """Test updating a team in the database."""
50 team_repo = TeamDbRepository(database)
51 team = await make_team_in_db()
53 team = replace(team, remark="This is a test.")
54 await team_repo.update(team)
56 team = await team_repo.get(team_repo.create_query().filter_by_id(team.id))
57 assert team.remark == "This is a test.", "The team should be updated."
60async def test_add_team_member(
61 database: Database, make_team_in_db, make_member_in_db, make_team_member
62):
63 """Test adding a team member to a team."""
64 team_repo = TeamDbRepository(database)
65 team = await make_team_in_db()
66 member = await make_member_in_db()
67 team = team.add_member(make_team_member(member=member))
69 await team_repo.add_team_member(team, team.members[member.uuid])
71 team = await team_repo.get(team_repo.create_query().filter_by_id(team.id))
72 assert len(team.members) == 1, "There should be one member in the team."
75async def test_delete_team_member(
76 database: Database, make_team_in_db, make_team_member_in_db
77):
78 """Test deleting a member from a team."""
79 team_repo = TeamDbRepository(database)
80 team = await make_team_in_db()
81 team_member = await make_team_member_in_db(team=team)
83 await team_repo.delete_team_member(team, team_member.member.id)
84 team = await team_repo.get(team_repo.create_query().filter_by_id(team.id))
85 assert len(team.members) == 0, "There should not be members in the team."