SIMNet/tests/test_genshin_battle_chronicle_client.py
2024-07-01 23:03:26 +08:00

57 lines
2.1 KiB
Python

from typing import TYPE_CHECKING
import pytest
import pytest_asyncio
from simnet.client.components.chronicle.genshin import GenshinBattleChronicleClient
from simnet.models.genshin.chronicle.stats import FullGenshinUserStats, Stats
if TYPE_CHECKING:
from simnet.client.cookies import Cookies
from simnet.utils.enums import Region
@pytest_asyncio.fixture
async def genshin_client(genshin_player_id: int, account_id: int, region: "Region", cookies: "Cookies"):
if genshin_player_id is None:
pytest.skip("Test case test_genshin_battle_chronicle_client skipped: No genshin player id set.")
async with GenshinBattleChronicleClient(
player_id=genshin_player_id,
cookies=cookies,
account_id=account_id,
region=region,
) as client_instance:
yield client_instance
@pytest.mark.asyncio
class TestGenshinBattleChronicleClient:
@staticmethod
async def test_get_battle_chronicle(genshin_client: GenshinBattleChronicleClient):
user = await genshin_client.get_genshin_user()
assert user.stats.days_active >= 0
@staticmethod
async def test_get_full_genshin_user(genshin_client: GenshinBattleChronicleClient):
user = await genshin_client.get_full_genshin_user()
assert isinstance(user, FullGenshinUserStats)
assert isinstance(user.stats, Stats)
@staticmethod
async def test_get_partial_genshin_user(genshin_client: GenshinBattleChronicleClient):
user = await genshin_client.get_partial_genshin_user()
assert user.stats.days_active >= 0
@staticmethod
async def test_get_genshin_characters(genshin_client: GenshinBattleChronicleClient):
characters = await genshin_client.get_genshin_characters()
assert len(characters) > 0
for character in characters:
assert character.id
assert character.level
@staticmethod
async def test_get_genshin_imaginarium_theater(genshin_client: GenshinBattleChronicleClient):
data = await genshin_client.get_genshin_imaginarium_theater()
assert len(data.data) > 0