"""Sidecar provenance tests for r2v grouping identity and provider ids."""

from __future__ import annotations

from types import SimpleNamespace

from recoil.pipeline._lib.sidecar import populate_sidecar


def test_sidecar_provenance_includes_grouping_segment_shot_ids_and_provider_run_id():
    receipt = SimpleNamespace(
        cost_usd=1.25,
        metadata={
            "provider": "fal",
            "request_id": "fal-request-123",
            "seed": 42,
        },
    )
    grouping = {
        "strategy": "coverage",
        "ordinal": 11,
        "shot_ids": ["EP001_SH23", "EP001_SH24", "EP001_SH25"],
        "source_pass_id": "PASS_011",
    }

    sidecar = populate_sidecar(
        receipt=receipt,
        payload={
            "prompt": "test prompt",
            "model": "seeddance-2.0",
            "modality": "r2v_multi",
            "duration_s": 10,
            "grouping": grouping,
            "segment_shot_ids": ["EP001_SH23", "EP001_SH24", "EP001_SH25"],
        },
        project="tartarus",
        shot_id="PASS_011",
        pipeline="r2v_multi",
    )

    provenance = sidecar["provenance"]
    assert provenance["grouping"] == grouping
    assert provenance["segment_shot_ids"] == [
        "EP001_SH23",
        "EP001_SH24",
        "EP001_SH25",
    ]
    assert provenance["project"] == "tartarus"
    assert provenance["shot_id"] == "PASS_011"
    assert provenance["provider_run_id"] == "fal-request-123"


def test_sidecar_provenance_preserves_flora_run_id_when_provider_is_flora():
    receipt = SimpleNamespace(
        cost_usd=1.25,
        metadata={
            "provider": "flora",
            "request_id": "run_flora_123",
        },
    )

    sidecar = populate_sidecar(
        receipt=receipt,
        payload={
            "prompt": "test prompt",
            "model": "seeddance-2.0",
            "modality": "r2v_multi",
            "duration_s": 10,
            "grouping": {"strategy": "oner", "ordinal": 1, "shot_ids": ["EP001_SH10"]},
            "segment_shot_ids": ["EP001_SH10"],
        },
        project="tartarus",
        shot_id="ONER_001",
        pipeline="r2v_multi",
    )

    provenance = sidecar["provenance"]
    assert provenance["provider_run_id"] == "run_flora_123"
    assert provenance["flora_run_id"] == "run_flora_123"
