ffxivbis/test/test_view_player.py

82 lines
2.7 KiB
Python

from typing import Any, List
from ffxivbis.api.utils import make_json
from ffxivbis.core.party import Party
from ffxivbis.models.piece import Piece
from ffxivbis.models.player import Player
async def test_players_get(server: Any, party: Party, player: Player) -> None:
await party.set_player(player)
response = await server.get('/api/v1/party')
assert response.status == 200
assert await response.text() == make_json(party.party)
async def test_players_get_with_filter(server: Any, party: Party, player: Player, player2: Player) -> None:
await party.set_player(player)
response = await server.get('/api/v1/party', params={'nick': player.nick})
assert response.status == 200
assert await response.text() == make_json([player])
response = await server.get('/api/v1/party', params={'nick': player2.nick})
assert response.status == 200
assert await response.text() == make_json([player2])
async def test_players_post_add(server: Any, party: Party, player: Player) -> None:
await party.remove_player(player.player_id)
response = await server.get('/api/v1/party', params={'nick': player.nick})
assert response.status == 200
assert await response.text() == make_json([])
response = await server.post('/api/v1/party', json={
'action': 'add',
'job': player.job.name,
'nick': player.nick
})
assert response.status == 200
assert player.player_id in party.players
async def test_players_post_remove(server: Any, party: Party, player: Player) -> None:
response = await server.get('/api/v1/party', params={'nick': player.nick})
assert response.status == 200
assert await response.text() == make_json([player])
response = await server.post('/api/v1/party', json={
'action': 'remove',
'job': player.job.name,
'nick': player.nick
})
assert response.status == 200
response = await server.get('/api/v1/party', params={'nick': player.nick})
assert response.status == 200
assert await response.text() == make_json([])
assert player.player_id not in party.players
async def test_players_post_add_with_link(server: Any, party: Party, player: Player,
bis_link: str, bis_set: List[Piece]) -> None:
await party.remove_player(player.player_id)
response = await server.get('/api/v1/party', params={'nick': player.nick})
assert response.status == 200
assert await response.text() == make_json([])
response = await server.post('/api/v1/party', json={
'action': 'add',
'job': player.job.name,
'nick': player.nick,
'link': bis_link
})
assert response.status == 200
assert party.players[player.player_id].bis.pieces == bis_set