feat(random): multi-theme groundwork, locked reroll export parity, duplicate export fix, expanded diagnostics and test coverage

This commit is contained in:
matt 2025-09-25 15:14:15 -07:00
parent a029d430c5
commit 73685f22c8
39 changed files with 2671 additions and 271 deletions

View file

@ -0,0 +1,25 @@
from __future__ import annotations
import importlib
import os
from starlette.testclient import TestClient
def _client(monkeypatch):
monkeypatch.setenv('RANDOM_MODES', '1')
monkeypatch.setenv('CSV_FILES_DIR', os.path.join('csv_files', 'testdata'))
app_module = importlib.import_module('code.web.app')
return TestClient(app_module.app)
def test_reroll_diagnostics_match_full_build(monkeypatch):
client = _client(monkeypatch)
base = client.post('/api/random_full_build', json={'seed': 321})
assert base.status_code == 200
seed = base.json()['seed']
reroll = client.post('/api/random_reroll', json={'seed': seed})
assert reroll.status_code == 200
d_base = base.json().get('diagnostics') or {}
d_reroll = reroll.json().get('diagnostics') or {}
# Allow reroll to omit elapsed_ms difference but keys should at least cover attempts/timeouts flags
for k in ['attempts', 'timeout_hit', 'retries_exhausted']:
assert k in d_base and k in d_reroll