mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-07-30 06:09:56 +00:00
Add web status route (#13)
* add status route * typed status and get status at the start of application
This commit is contained in:
@ -2,7 +2,10 @@ import pytest
|
||||
|
||||
from unittest.mock import MagicMock, PropertyMock
|
||||
|
||||
from ahriman import version
|
||||
from ahriman.models.build_status import BuildStatus, BuildStatusEnum
|
||||
from ahriman.models.counters import Counters
|
||||
from ahriman.models.internal_status import InternalStatus
|
||||
from ahriman.models.package import Package
|
||||
from ahriman.models.package_description import PackageDescription
|
||||
|
||||
@ -12,6 +15,24 @@ def build_status_failed() -> BuildStatus:
|
||||
return BuildStatus(BuildStatusEnum.Failed, 42)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def counters() -> Counters:
|
||||
return Counters(total=10,
|
||||
unknown=1,
|
||||
pending=2,
|
||||
building=3,
|
||||
failed=4,
|
||||
success=0)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def internal_status(counters: Counters) -> InternalStatus:
|
||||
return InternalStatus(architecture="x86_64",
|
||||
packages=counters,
|
||||
version=version.__version__,
|
||||
repository="aur-clone")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def package_tpacpi_bat_git() -> Package:
|
||||
return Package(
|
||||
|
31
tests/ahriman/models/test_counters.py
Normal file
31
tests/ahriman/models/test_counters.py
Normal file
@ -0,0 +1,31 @@
|
||||
from dataclasses import asdict
|
||||
|
||||
from ahriman.models.build_status import BuildStatus, BuildStatusEnum
|
||||
from ahriman.models.counters import Counters
|
||||
from ahriman.models.package import Package
|
||||
|
||||
|
||||
def test_counters_from_json_view(counters: Counters) -> None:
|
||||
"""
|
||||
must construct same object from json
|
||||
"""
|
||||
assert Counters.from_json(asdict(counters)) == counters
|
||||
|
||||
|
||||
def test_counters_from_packages(package_ahriman: Package, package_python_schedule: Package) -> None:
|
||||
"""
|
||||
must construct object from list of packages with their statuses
|
||||
"""
|
||||
payload = [
|
||||
(package_ahriman, BuildStatus(status=BuildStatusEnum.Success)),
|
||||
(package_python_schedule, BuildStatus(status=BuildStatusEnum.Failed)),
|
||||
]
|
||||
|
||||
counters = Counters.from_packages(payload)
|
||||
assert counters.total == 2
|
||||
assert counters.success == 1
|
||||
assert counters.failed == 1
|
||||
|
||||
json = asdict(counters)
|
||||
total = json.pop("total")
|
||||
assert total == sum(i for i in json.values())
|
8
tests/ahriman/models/test_internal_status.py
Normal file
8
tests/ahriman/models/test_internal_status.py
Normal file
@ -0,0 +1,8 @@
|
||||
from ahriman.models.internal_status import InternalStatus
|
||||
|
||||
|
||||
def test_internal_status_from_json_view(internal_status: InternalStatus) -> None:
|
||||
"""
|
||||
must construct same object from json
|
||||
"""
|
||||
assert InternalStatus.from_json(internal_status.view()) == internal_status
|
Reference in New Issue
Block a user