mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-09-12 11:49:55 +00:00
feat: implement stats subcommand (#132)
This commit is contained in:
@ -2,9 +2,23 @@ import pytest
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from ahriman.core.formatters import AurPrinter, ChangesPrinter, ConfigurationPathsPrinter, ConfigurationPrinter, \
|
||||
PackagePrinter, PatchPrinter, RepositoryPrinter, StatusPrinter, StringPrinter, TreePrinter, UpdatePrinter, \
|
||||
UserPrinter, ValidationPrinter, VersionPrinter
|
||||
from ahriman.core.formatters import \
|
||||
AurPrinter, \
|
||||
ChangesPrinter, \
|
||||
ConfigurationPathsPrinter, \
|
||||
ConfigurationPrinter, \
|
||||
EventStatsPrinter, \
|
||||
PackagePrinter, \
|
||||
PackageStatsPrinter, \
|
||||
PatchPrinter, \
|
||||
RepositoryPrinter, \
|
||||
StatusPrinter, \
|
||||
StringPrinter, \
|
||||
TreePrinter, \
|
||||
UpdatePrinter, \
|
||||
UserPrinter, \
|
||||
ValidationPrinter, \
|
||||
VersionPrinter
|
||||
from ahriman.models.aur_package import AURPackage
|
||||
from ahriman.models.build_status import BuildStatus
|
||||
from ahriman.models.changes import Changes
|
||||
@ -61,6 +75,17 @@ def configuration_printer() -> ConfigurationPrinter:
|
||||
return ConfigurationPrinter("section", {"key_one": "value_one", "key_two": "value_two"})
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def event_stats_printer() -> EventStatsPrinter:
|
||||
"""
|
||||
fixture for event stats printer
|
||||
|
||||
Returns:
|
||||
EventStatsPrinter: event stats printer test instance
|
||||
"""
|
||||
return EventStatsPrinter("event", [5, 2, 7, 9, 8, 0, 4, 1, 6, 3])
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def package_ahriman_printer(package_ahriman: Package) -> PackagePrinter:
|
||||
"""
|
||||
@ -75,6 +100,21 @@ def package_ahriman_printer(package_ahriman: Package) -> PackagePrinter:
|
||||
return PackagePrinter(package_ahriman, BuildStatus())
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def package_stats_printer(package_ahriman: Package, package_python_schedule: Package) -> PackageStatsPrinter:
|
||||
"""
|
||||
fixture for package stats printer
|
||||
|
||||
Args:
|
||||
package_ahriman(Package): package fixture
|
||||
package_python_schedule(Package): schedule package fixture
|
||||
|
||||
Returns:
|
||||
PackageStatsPrinter: package stats printer test instance
|
||||
"""
|
||||
return PackageStatsPrinter({package_ahriman.base: 4, package_python_schedule.base: 5})
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def patch_printer(package_ahriman: Package) -> PatchPrinter:
|
||||
"""
|
||||
|
29
tests/ahriman/core/formatters/test_event_stats_printer.py
Normal file
29
tests/ahriman/core/formatters/test_event_stats_printer.py
Normal file
@ -0,0 +1,29 @@
|
||||
from ahriman.core.formatters import EventStatsPrinter
|
||||
|
||||
|
||||
def test_properties(event_stats_printer: EventStatsPrinter) -> None:
|
||||
"""
|
||||
must return empty properties list
|
||||
"""
|
||||
assert event_stats_printer.properties()
|
||||
|
||||
|
||||
def test_properties_empty() -> None:
|
||||
"""
|
||||
must correctly generate properties for empty events list
|
||||
"""
|
||||
assert EventStatsPrinter("event", []).properties()
|
||||
|
||||
|
||||
def test_properties_single() -> None:
|
||||
"""
|
||||
must skip calculation of the standard deviation for single event
|
||||
"""
|
||||
assert EventStatsPrinter("event", [1]).properties()
|
||||
|
||||
|
||||
def test_title(event_stats_printer: EventStatsPrinter) -> None:
|
||||
"""
|
||||
must return non-empty title
|
||||
"""
|
||||
assert event_stats_printer.title() is not None
|
30
tests/ahriman/core/formatters/test_package_stats_printer.py
Normal file
30
tests/ahriman/core/formatters/test_package_stats_printer.py
Normal file
@ -0,0 +1,30 @@
|
||||
from ahriman.core.formatters import PackageStatsPrinter
|
||||
|
||||
|
||||
def test_properties(package_stats_printer: PackageStatsPrinter) -> None:
|
||||
"""
|
||||
must return non-empty properties list
|
||||
"""
|
||||
assert package_stats_printer.properties()
|
||||
|
||||
|
||||
def test_properties_sorted(package_stats_printer: PackageStatsPrinter) -> None:
|
||||
"""
|
||||
properties list must be sorted in descending order
|
||||
"""
|
||||
prop1, prop2 = package_stats_printer.properties()
|
||||
assert prop1.value > prop2.value
|
||||
|
||||
|
||||
def test_properties_empty() -> None:
|
||||
"""
|
||||
must return empty properties list for the empty events list
|
||||
"""
|
||||
assert not PackageStatsPrinter({}).properties()
|
||||
|
||||
|
||||
def test_title(package_stats_printer: PackageStatsPrinter) -> None:
|
||||
"""
|
||||
must return non-empty title
|
||||
"""
|
||||
assert package_stats_printer.title() is not None
|
Reference in New Issue
Block a user