from pathlib import Path
ROOT=Path(__file__).resolve().parents[1]
def read(x): return (ROOT/x).read_text(encoding='utf-8')
def test_v018_router_ui_version():
 m=read('app/main.py'); a=read('app/api/v018.py')
 assert 'v018_router' in m and '/federated-worker' in m
 for route in ['/worker-execute','/worker-runs','/resume','/exports','/download']: assert route in a
 assert (ROOT/'app/static/federated-worker.html').exists()
def test_v018_models_migration():
 e=read('app/models/entities.py'); s=read('migrations/018_distributed_federated_worker.sql')
 for n in ['FederatedWorkerRun','QuerySpillSegment','QueryExport']: assert f'class {n}' in e
 for t in ['federated_worker_runs_v018','query_spill_segments_v018','query_exports_v018']: assert t in s
def test_v018_worker_controls():
 s=read('app/services/federated_worker.py')
 for token in ['_hash_join','_spill','checksum','memory_limit_mb','checkpoint','resume_worker_run','create_export','gzip']: assert token in s
def test_v018_docs():
 for f in ['USER_GUIDE_V018.md','ADMIN_GUIDE_V018.md','HOMOLOGATION_V018.md']: assert (ROOT/f).exists()
