ahriman/tests/ahriman/models/test_result.py

165 lines
3.9 KiB
Python

from ahriman.models.package import Package
from ahriman.models.result import Result
def test_is_empty() -> None:
"""
must return is empty for empty builds
"""
result = Result()
assert result.is_empty
def test_non_empty_success(package_ahriman: Package) -> None:
"""
must be non-empty if there is success build
"""
result = Result()
result.add_updated(package_ahriman)
assert not result.is_empty
def test_is_empty_failed(package_ahriman: Package) -> None:
"""
must be empty if there is only failed build
"""
result = Result()
result.add_failed(package_ahriman)
assert result.is_empty
def test_non_empty_full(package_ahriman: Package) -> None:
"""
must be non-empty if there are both failed and success builds
"""
result = Result()
result.add_failed(package_ahriman)
result.add_updated(package_ahriman)
assert not result.is_empty
def test_add_added(package_ahriman: Package) -> None:
"""
must add package to new packages list
"""
result = Result()
result.add_added(package_ahriman)
assert not result.failed
assert not result.removed
assert result.success == [package_ahriman]
def test_add_failed(package_ahriman: Package) -> None:
"""
must add package to failed list
"""
result = Result()
result.add_failed(package_ahriman)
assert result.failed == [package_ahriman]
assert not result.removed
assert not result.success
def test_add_removed(package_ahriman: Package) -> None:
"""
must add package to removed list
"""
result = Result()
result.add_removed(package_ahriman)
assert not result.failed
assert result.removed == [package_ahriman]
assert not result.success
def test_add_updated(package_ahriman: Package) -> None:
"""
must add package to success list
"""
result = Result()
result.add_updated(package_ahriman)
assert not result.failed
assert not result.removed
assert result.success == [package_ahriman]
def test_merge(package_ahriman: Package, package_python_schedule: Package) -> None:
"""
must merge success packages
"""
left = Result()
left.add_updated(package_ahriman)
right = Result()
right.add_updated(package_python_schedule)
result = left.merge(right)
assert result.success == [package_ahriman, package_python_schedule]
assert not left.failed
def test_merge_failed(package_ahriman: Package) -> None:
"""
must merge and remove failed packages from success list
"""
left = Result()
left.add_updated(package_ahriman)
right = Result()
right.add_failed(package_ahriman)
result = left.merge(right)
assert result.failed == [package_ahriman]
assert not left.success
def test_eq(package_ahriman: Package, package_python_schedule: Package) -> None:
"""
must return True for same objects
"""
left = Result()
left.add_updated(package_ahriman)
left.add_failed(package_python_schedule)
right = Result()
right.add_updated(package_ahriman)
right.add_failed(package_python_schedule)
assert left == right
def test_eq_false(package_ahriman: Package) -> None:
"""
must return False in case if lists do not match
"""
left = Result()
left.add_updated(package_ahriman)
right = Result()
right.add_failed(package_ahriman)
assert left != right
def test_eq_false_failed(package_ahriman: Package) -> None:
"""
must return False in case if failed does not match
"""
left = Result()
left.add_failed(package_ahriman)
assert left != Result()
def test_eq_false_success(package_ahriman: Package) -> None:
"""
must return False in case if success does not match
"""
left = Result()
left.add_updated(package_ahriman)
assert left != Result()
def test_eq_other() -> None:
"""
must return False in case if object is not an instance of result
"""
assert Result() != 42