"""Unit tests for ids module."""


def test_document_id_format():
    from libs.common.ids import document_id
    did = document_id("sec", "ISSUER::0000320193", "2026-01-29", "0000320193-26-000001")
    assert did.startswith("DOC::sec::ISSUER::0000320193::2026-01-29::")


def test_event_id_format():
    from libs.common.ids import event_id
    eid = event_id("DOC::sec::x::2026-01-01::acc", "earnings_release")
    assert eid.startswith("EVT::")
    assert "earnings_release" in eid


def test_issuer_id_from_cik():
    from libs.common.ids import issuer_id_from_cik
    iid = issuer_id_from_cik("320193")
    assert iid == "ISSUER::0000320193"


def test_symbol_id_from_ticker():
    from libs.common.ids import symbol_id_from_ticker
    sid = symbol_id_from_ticker("AAPL")
    assert sid == "SYM::AAPL::XNYS"


def test_symbol_id_uppercase():
    from libs.common.ids import symbol_id_from_ticker
    sid = symbol_id_from_ticker("aapl", "NASDAQ")
    assert sid == "SYM::AAPL::NASDAQ"


def test_sha256_checksum():
    from libs.common.ids import sha256_checksum
    c = sha256_checksum(b"hello")
    assert len(c) == 64
    assert c == sha256_checksum(b"hello")


def test_sha256_different():
    from libs.common.ids import sha256_checksum
    assert sha256_checksum(b"hello") != sha256_checksum(b"world")


def test_new_job_run_id():
    import uuid

    from libs.common.ids import new_job_run_id
    rid = new_job_run_id()
    # Must be valid UUID
    uuid.UUID(rid)
