mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2025-12-17 16:10:12 +01:00
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
|
|
import os
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
from fastapi.testclient import TestClient
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture(scope="module")
|
||
|
|
def client():
|
||
|
|
# Ensure flags and frozen dataset
|
||
|
|
os.environ["RANDOM_MODES"] = "1"
|
||
|
|
os.environ["RANDOM_UI"] = "1"
|
||
|
|
os.environ["CSV_FILES_DIR"] = os.path.join("csv_files", "testdata")
|
||
|
|
|
||
|
|
from web.app import app
|
||
|
|
|
||
|
|
with TestClient(app) as c:
|
||
|
|
yield c
|
||
|
|
|
||
|
|
|
||
|
|
def test_reroll_idempotency_and_progression(client: TestClient):
|
||
|
|
# Initial build
|
||
|
|
base_seed = 2024
|
||
|
|
r1 = client.post("/api/random_full_build", json={"seed": base_seed})
|
||
|
|
assert r1.status_code == 200, r1.text
|
||
|
|
d1 = r1.json()
|
||
|
|
deck1 = d1.get("decklist")
|
||
|
|
assert isinstance(deck1, list) and deck1
|
||
|
|
|
||
|
|
# Rebuild with the same seed should produce identical result
|
||
|
|
r_same = client.post("/api/random_full_build", json={"seed": base_seed})
|
||
|
|
assert r_same.status_code == 200, r_same.text
|
||
|
|
deck_same = r_same.json().get("decklist")
|
||
|
|
assert deck_same == deck1
|
||
|
|
|
||
|
|
# Reroll (seed+1) should typically change the result
|
||
|
|
r2 = client.post("/api/random_reroll", json={"seed": base_seed})
|
||
|
|
assert r2.status_code == 200, r2.text
|
||
|
|
d2 = r2.json()
|
||
|
|
assert d2.get("seed") == base_seed + 1
|
||
|
|
deck2 = d2.get("decklist")
|
||
|
|
|
||
|
|
# It is acceptable that a small dataset could still coincide, but in practice should differ
|
||
|
|
assert deck2 != deck1 or d2.get("commander") != d1.get("commander")
|