#!/usr/bin/env python3
"""Tests for Story 1.04: Qdrant Collection Setup"""
import sys
sys.path.insert(0, '/mnt/e/genesis-system')


def test_qdrant_schema():
    from core.schema.qdrant_schema import COLLECTIONS, setup_collections, verify_collections

    # BB1: COLLECTIONS has all 3 required collections
    assert "aiva_conversations" in COLLECTIONS
    assert "kinan_directives" in COLLECTIONS
    assert "aiva_scars" in COLLECTIONS
    assert len(COLLECTIONS) == 3

    # BB2: All collections use vector_size=768
    for name, config in COLLECTIONS.items():
        assert config["vector_size"] == 768, f"{name} has wrong vector_size: {config['vector_size']}"

    # BB3: All collections use Cosine distance
    for name, config in COLLECTIONS.items():
        assert config["distance"] == "Cosine", f"{name} has wrong distance: {config['distance']}"

    # WB1: aiva_conversations has 4 payload fields
    assert len(COLLECTIONS["aiva_conversations"]["payload_fields"]) == 4

    # WB2: kinan_directives has 3 payload fields
    assert len(COLLECTIONS["kinan_directives"]["payload_fields"]) == 3

    # WB3: aiva_scars has 2 payload fields
    assert len(COLLECTIONS["aiva_scars"]["payload_fields"]) == 2

    # IT1: Try to connect to real Qdrant (Elestio) and run setup
    try:
        from qdrant_client import QdrantClient
        client = QdrantClient(
            host="qdrant-b3knu-u50607.vm.elestio.app",
            port=6333,
            api_key="xVJnDTr5W4Nax6FBafFhtUzpoN5Z5jrC"
        )

        results = setup_collections(client)
        print(f"Setup results: {results}")

        # Verify all collections exist
        assert verify_collections(client), "verify_collections should return True after setup"

        # Re-run setup (idempotent)
        results2 = setup_collections(client)
        for name, status in results2.items():
            assert status in ("exists", "created"), f"{name} unexpected status: {status}"

        print("LIVE Qdrant tests PASSED")
    except ImportError:
        print("qdrant_client not installed — skipping live tests")
    except Exception as e:
        print(f"Qdrant connection failed (non-fatal): {e}")

    print("ALL TESTS PASSED — Story 1.04")


if __name__ == "__main__":
    test_qdrant_schema()
