from __future__ import annotations

import tempfile
import unittest
from pathlib import Path

from amundsen.core.analysis_cache import AnalysisCache


class AnalysisCacheTest(unittest.TestCase):
    def test_write_read_and_clear_analysis_payload(self) -> None:
        with tempfile.TemporaryDirectory() as cache_dir:
            cache = AnalysisCache(cache_dir)

            cache.write("route-1", {"summary": {"distance_km": 12.3}})
            payload = cache.read("route-1")
            cache.clear("route-1")

            self.assertEqual(payload["summary"]["distance_km"], 12.3)
            self.assertIsNone(cache.read("route-1"))

    def test_invalid_json_is_ignored(self) -> None:
        with tempfile.TemporaryDirectory() as cache_dir:
            cache = AnalysisCache(cache_dir)
            Path(cache_dir, "route1.json").write_text("{", encoding="utf-8")

            self.assertIsNone(cache.read("route1"))


if __name__ == "__main__":
    unittest.main()
