45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
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
|