from __future__ import annotations

import json

from src.ctb_copy.discovery_registry import DiscoveryRegistry


def test_discovery_registry_preserves_first_seen_and_counts_forward(tmp_path) -> None:
    path = tmp_path / "state" / "discovery_registry.json"
    registry = DiscoveryRegistry.load(path)

    first, created = registry.upsert_seen(
        "vault-a",
        "vault",
        "test-source",
        seen_at="2026-06-01T00:00:00+00:00",
    )
    second, created_second = registry.upsert_seen(
        "vault-a",
        "vault",
        "test-source-2",
        seen_at="2026-06-14T00:00:00+00:00",
        status="watchlist",
        notes="manual review",
    )
    registry.save()

    assert created is True
    assert created_second is False
    assert first.first_seen_at == "2026-06-01T00:00:00+00:00"
    assert second.first_seen_at == "2026-06-01T00:00:00+00:00"
    assert second.last_seen_at == "2026-06-14T00:00:00+00:00"
    assert second.observation_days == 13
    assert second.snapshot_count == 2
    assert second.status == "watchlist"

    payload = json.loads(path.read_text())
    assert payload["leaders"]["vault:vault-a"]["first_seen_at"] == "2026-06-01T00:00:00+00:00"
