import json from pathlib import Path import pytest from app.modules.project.domain.entities import Project from app.modules.project.infrastructure.json_repository import JsonProjectRepository @pytest.fixture def repo(tmp_path: Path) -> JsonProjectRepository: return JsonProjectRepository(tmp_path / "projects.json") def test_empty_repo_returns_empty_list(repo: JsonProjectRepository): assert repo.list_all() == [] def test_save_and_get(repo: JsonProjectRepository): from datetime import datetime p = Project(id="id1", name="test", design_dir="/tmp/d", code_dir=None, created_at=datetime(2026, 1, 1)) repo.save(p) assert repo.get_by_id("id1") is not None assert repo.get_by_id("id1").name == "test" def test_list_all(repo: JsonProjectRepository): from datetime import datetime p1 = Project(id="id1", name="a", design_dir="/d1", code_dir=None, created_at=datetime(2026, 1, 1)) p2 = Project(id="id2", name="b", design_dir="/d2", code_dir=None, created_at=datetime(2026, 1, 2)) repo.save(p1) repo.save(p2) assert len(repo.list_all()) == 2 def test_delete(repo: JsonProjectRepository): from datetime import datetime p = Project(id="id1", name="test", design_dir="/d", code_dir=None, created_at=datetime(2026, 1, 1)) repo.save(p) repo.delete("id1") assert repo.get_by_id("id1") is None def test_get_nonexistent_returns_none(repo: JsonProjectRepository): assert repo.get_by_id("nope") is None