60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
import pytest
|
|
from datetime import datetime
|
|
|
|
from app.modules.impl_tracker.application.services import ImplTrackerService
|
|
from app.modules.project.domain.entities import Project
|
|
from app.modules.scanner.application.services import ScanService
|
|
|
|
|
|
@pytest.fixture
|
|
def impl_service():
|
|
return ImplTrackerService()
|
|
|
|
|
|
@pytest.fixture
|
|
def scan_result():
|
|
svc = ScanService()
|
|
project = Project(
|
|
id="test", name="test",
|
|
design_dir="/workspace/arch-design-agent-skill-dashboard/design",
|
|
code_dir=None, created_at=datetime(2026, 1, 1),
|
|
)
|
|
return svc.scan(project)
|
|
|
|
|
|
@pytest.fixture
|
|
def test_project():
|
|
return Project(
|
|
id="test", name="test",
|
|
design_dir="/workspace/arch-design-agent-skill-dashboard/design",
|
|
code_dir=None, created_at=datetime(2026, 1, 1),
|
|
)
|
|
|
|
|
|
def test_evaluate_no_code_dir(impl_service, test_project, scan_result):
|
|
progress = impl_service.evaluate(test_project, scan_result)
|
|
assert len(progress) > 0
|
|
assert all(p.percentage == 0.0 for p in progress)
|
|
assert all(p.source == "auto" for p in progress)
|
|
|
|
|
|
def test_get_progress_before_evaluate(impl_service):
|
|
assert impl_service.get_progress("nonexistent") is None
|
|
|
|
|
|
def test_get_progress_after_evaluate(impl_service, test_project, scan_result):
|
|
impl_service.evaluate(test_project, scan_result)
|
|
cached = impl_service.get_progress("test")
|
|
assert cached is not None
|
|
assert len(cached) > 0
|
|
|
|
|
|
def test_set_manual_progress(impl_service, test_project, scan_result):
|
|
impl_service.evaluate(test_project, scan_result)
|
|
impl_service.set_manual_progress("test", "MOD-PROJECT", 75.0)
|
|
cached = impl_service.get_progress("test")
|
|
mod_progress = [p for p in cached if p.module_id == "MOD-PROJECT"]
|
|
assert len(mod_progress) == 1
|
|
assert mod_progress[0].percentage == 75.0
|
|
assert mod_progress[0].source == "manual"
|