"""Tests for roadmap and bits JSON schema validation."""

import json
from pathlib import Path

import pytest

from validation.json_schemas import (
    BITS_SCHEMA_VERSION,
    ROADMAP_SCHEMA_VERSION,
    JsonSchemaValidationError,
    load_schemas,
    validate_bits,
    validate_roadmap,
)


def _load_json(path: Path):
    with path.open("r", encoding="utf-8") as fh:
        return json.load(fh)


def test_schema_files_load() -> None:
    schemas = load_schemas()
    assert schemas.roadmap_validator is not None
    assert schemas.bits_validator is not None


def test_selected_roadmap_example_passes() -> None:
    data = _load_json(Path("output/can-do-steps/za-birds/roadmap-za-birds.json"))
    data["schema_version"] = ROADMAP_SCHEMA_VERSION
    validate_roadmap(data)


def test_selected_bits_example_passes() -> None:
    data = _load_json(Path("output/can-do-steps/za-birds/bits_za-birds.json"))
    data["schema_version"] = BITS_SCHEMA_VERSION
    validate_bits(data)


def test_bad_roadmap_fails_when_tracks_missing() -> None:
    bad_payload = {
        "schema_version": ROADMAP_SCHEMA_VERSION,
        "id": "test-roadmap",
        "slug": "test-roadmap",
        "title": "Test Roadmap",
        "description": "Schema failure sample"
    }

    with pytest.raises(JsonSchemaValidationError):
        validate_roadmap(bad_payload)
