"""Unit tests for file_store module."""
import pytest


@pytest.fixture
def tmp_data_root(tmp_path, monkeypatch):
    """Redirect data root to tmp for isolation."""
    from libs.common import config
    config.get_settings.cache_clear()
    monkeypatch.setenv("DATA_ROOT", str(tmp_path))
    yield tmp_path
    config.get_settings.cache_clear()


def test_write_and_read_exhibit(tmp_data_root):
    from libs.common.file_store import read_exhibit, write_exhibit
    content = "This is exhibit content."
    checksum = write_exhibit("ACC123", "EX-99.1", content)
    assert len(checksum) == 64
    result = read_exhibit("ACC123", "EX-99.1")
    assert result == content


def test_exists_exhibit(tmp_data_root):
    from libs.common.file_store import exists_exhibit, write_exhibit
    assert not exists_exhibit("ACC999", "EX-99.1")
    write_exhibit("ACC999", "EX-99.1", "content")
    assert exists_exhibit("ACC999", "EX-99.1")


def test_checksum_deterministic(tmp_data_root):
    from libs.common.file_store import get_checksum, write_exhibit
    write_exhibit("ACC456", "EX-99.1", "hello world")
    c = get_checksum("ACC456", "EX-99.1")
    assert c is not None
    # Second call returns same
    assert get_checksum("ACC456", "EX-99.1") == c


def test_exhibit_path_safe_chars(tmp_data_root):
    from libs.common.file_store import exhibit_path
    p = exhibit_path("ACC789", "EX-99.1")
    assert "EX-99.1.txt" in str(p)
