from pathlib import Path
import ast

def test_v007_python_is_parseable():
    for name in ['app/api/v007.py','app/services/workflow.py','app/services/alerts.py']:
        ast.parse(Path(name).read_text())

def test_v007_models_exist():
    text=Path('app/models/entities.py').read_text()
    for name in ['WorkflowDefinition','WorkflowInstance','WorkflowTask','WorkflowEvent','AlertRule','AlertEvent','ApiCredential']:
        assert f'class {name}' in text

def test_workflow_api_contracts_exist():
    text=Path('app/api/v007.py').read_text()
    for route in ["'/workflows'","'/workflows/{wid}/start'","'/workflow-tasks/{tid}/complete'","'/alerts'","'/apis/{api_id}/test'"]:
        assert route in text

def test_workers_are_scheduled():
    text=Path('app/workers/celery_app.py').read_text()
    assert 'evaluate-alert-rules-every-minute' in text
    assert 'advance-workflow-timers-every-minute' in text
