async def test_add_player_to_team__max_member_number_excceded(): original_val = constants.MAX_TEAM_MEMBERS constants.MAX_TEAM_MEMBERS = 1 users_data = [{ "username": "******", "password": "******", }, { "username": "******", "password": "******", }] team_data = { "name": "team 1", } db_team = Team(**team_data) db_user1 = User(**users_data[0]) db_user2 = User(**users_data[1]) db_team.players.append(db_user1) with dal.get_session_ctx() as session: session.add(db_team) session.add(db_user1) session.add(db_user2) session.commit() session.refresh(db_team) session.refresh(db_user1) session.refresh(db_user2) async with AsyncClient(app=app, base_url=BASE_URL) as client: response = await client.patch( f"/teams/{db_team.id}/add-player/{db_user2.id}") assert response.status_code == 403 assert response.json() == { "detail": "The team already has the maximum number of members in it" } with dal.get_session_ctx() as session: session.delete(db_team) session.delete(db_user1) session.delete(db_user2) session.commit() constants.MAX_TEAM_MEMBERS = original_val
async def test_add_player_to_team__success(): users_data = [{ "username": "******", "password": "******", }, { "username": "******", "password": "******", }] team_data = { "name": "team 1", } db_team = Team(**team_data) db_user1 = User(**users_data[0]) db_user2 = User(**users_data[1]) db_team.players.append(db_user1) with dal.get_session_ctx() as session: session.add(db_team) session.add(db_user1) session.add(db_user2) session.commit() session.refresh(db_team) session.refresh(db_user1) session.refresh(db_user2) async with AsyncClient(app=app, base_url=BASE_URL) as client: response = await client.patch( f"/teams/{db_team.id}/add-player/{db_user2.id}") with dal.get_session_ctx() as session: session.add(db_team) session.refresh(db_team) team_details = team_schemas.Details.from_orm(db_team) assert response.status_code == 200 assert response.json() == team_details with dal.get_session_ctx() as session: session.delete(db_team) session.delete(db_user1) session.delete(db_user2) session.commit()
async def test_get_user__success(): app.dependency_overrides[validators.validate_admin] = lambda: None user_data = { "username": "******", "password": "******", } db_user = User(**user_data) with dal.get_session_ctx() as session: session.add(db_user) session.commit() session.refresh(db_user) async with AsyncClient(app=app, base_url=BASE_URL) as client: response = await client.get(f"/users/{db_user.id}") assert response.status_code == 200 assert response.json() == user_schemas.Details.from_orm(db_user) with dal.get_session_ctx() as session: session.delete(db_user) session.commit() app.dependency_overrides = {}
async def test_create_user__already_exists(): app.dependency_overrides[validators.validate_admin] = lambda: None user_data = { "username": "******", "password": "******", } db_user = User(**user_data) with dal.get_session_ctx() as session: session.add(db_user) session.commit() session.refresh(db_user) async with AsyncClient(app=app, base_url=BASE_URL) as client: response = await client.post("/users/", json=user_data) assert response.status_code == 409 assert response.json() == { "detail": f"The username: { user_data['username'] } is already taken" } with dal.get_session_ctx() as session: session.delete(db_user) session.commit() app.dependency_overrides = {}
def accept_invite( session: Session, db_player: User, db_team: Team, ) -> User: """ add player to team """ db_player.team = db_team db_player.team_invites.remove(db_team) session.commit()
def quit_team( session: Session, db_player: User, ) -> User: """ Remove player from team """ db_player.team = None session.commit() session.refresh(db_player) return db_player
def lead_team( session: Session, db_player: User, db_team: Team, ) -> User: """ Create team and assign player as the captain """ db_player.team = db_team session.commit() session.refresh(db_player) return db_player
async def test_add_player_to_team__wrong_user_type(): user_data = { "username": "******", "password": "******", } team_data = { "name": "team 1", } db_team = Team(**team_data) db_user = User(**user_data) db_user.user_type = enums.UserType.ADMIN with dal.get_session_ctx() as session: session.add(db_team) session.add(db_user) session.commit() session.refresh(db_team) session.refresh(db_user) async with AsyncClient(app=app, base_url=BASE_URL) as client: response = await client.patch( f"/teams/{db_team.id}/add-player/{db_user.id}") assert response.status_code == 403 assert response.json() == { "detail": f"Only players can be part of teams. { db_user } has user_type: { db_user.user_type }" } with dal.get_session_ctx() as session: session.delete(db_team) session.delete(db_user) session.commit()
async def test_add_player_to_team__player_already_in_team(): user_data = { "username": "******", "password": "******", } teams_data = [ { "name": "team 1", }, { "name": "team 2", }, ] db_team1 = Team(**teams_data[0]) db_team2 = Team(**teams_data[1]) db_user = User(**user_data) db_team1.players.append(db_user) with dal.get_session_ctx() as session: session.add(db_team1) session.add(db_team2) session.add(db_user) session.commit() session.refresh(db_team1) session.refresh(db_team2) session.refresh(db_user) async with AsyncClient(app=app, base_url=BASE_URL) as client: response = await client.patch( f"/teams/{db_team1.id}/add-player/{db_user.id}") assert response.status_code == 403 assert response.json() == { "detail": f"Player { db_user } is already part of a team" } with dal.get_session_ctx() as session: session.delete(db_team1) session.delete(db_team2) session.delete(db_user) session.commit()
async def test_remove_player_to_team__player_not_part_of_the_team(): team_data = { "name": "team 1", } user_data = { "username": "******", "password": "******", } db_team = Team(**team_data) db_user = User(**user_data) with dal.get_session_ctx() as session: session.add(db_team) session.add(db_user) session.commit() session.refresh(db_team) session.refresh(db_user) async with AsyncClient(app=app, base_url=BASE_URL) as client: response = await client.patch( f"/teams/{db_team.id}/remove-player/{db_user.id}") assert response.status_code == 403 assert response.json() == { "detail": f"Player { db_user } is not part of this team" } with dal.get_session_ctx() as session: session.delete(db_team) session.delete(db_user) session.commit()