add docstrings for every fixture and test methods

also add tests for missing components
This commit is contained in:
2021-08-11 01:51:23 +03:00
parent 581401d60f
commit 50af309c80
28 changed files with 385 additions and 1 deletions

View File

@ -11,24 +11,52 @@ from ahriman.models.repository_paths import RepositoryPaths
@pytest.fixture
def leaf_ahriman(package_ahriman: Package) -> Leaf:
"""
fixture for tree leaf with package
:param package_ahriman: package fixture
:return: tree leaf test instance
"""
return Leaf(package_ahriman, set())
@pytest.fixture
def leaf_python_schedule(package_python_schedule: Package) -> Leaf:
"""
fixture for tree leaf with package
:param package_python_schedule: package fixture
:return: tree leaf test instance
"""
return Leaf(package_python_schedule, set())
@pytest.fixture
def pacman(configuration: Configuration) -> Pacman:
"""
fixture for pacman wrapper
:param configuration: configuration fixture
:return: pacman wrapper test instance
"""
return Pacman(configuration)
@pytest.fixture
def repo(configuration: Configuration, repository_paths: RepositoryPaths) -> Repo:
"""
fixture for repository wrapper
:param configuration: configuration fixture
:param repository_paths: repository paths fixture
:return: repository wrapper test instance
"""
return Repo(configuration.get("repository", "name"), repository_paths, [])
@pytest.fixture
def task_ahriman(package_ahriman: Package, configuration: Configuration, repository_paths: RepositoryPaths) -> Task:
"""
fixture for built task
:param package_ahriman: package fixture
:param configuration: configuration fixture
:param repository_paths: repository paths fixture
:return: built task test instance
"""
return Task(package_ahriman, configuration, repository_paths)

View File

@ -12,12 +12,24 @@ from ahriman.core.repository.update_handler import UpdateHandler
@pytest.fixture
def cleaner(configuration: Configuration, mocker: MockerFixture) -> Cleaner:
"""
fixture for cleaner
:param configuration: configuration fixture
:param mocker: mocker object
:return: cleaner test instance
"""
mocker.patch("pathlib.Path.mkdir")
return Cleaner("x86_64", configuration)
@pytest.fixture
def executor(configuration: Configuration, mocker: MockerFixture) -> Executor:
"""
fixture for executor
:param configuration: configuration fixture
:param mocker: mocker object
:return: executor test instance
"""
mocker.patch("pathlib.Path.mkdir")
mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_build")
mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_cache")
@ -29,17 +41,34 @@ def executor(configuration: Configuration, mocker: MockerFixture) -> Executor:
@pytest.fixture
def repository(configuration: Configuration, mocker: MockerFixture) -> Repository:
"""
fixture for repository
:param configuration: configuration fixture
:param mocker: mocker object
:return: repository test instance
"""
mocker.patch("pathlib.Path.mkdir")
return Repository("x86_64", configuration)
@pytest.fixture
def properties(configuration: Configuration) -> Properties:
"""
fixture for properties
:param configuration: configuration fixture
:return: properties test instance
"""
return Properties("x86_64", configuration)
@pytest.fixture
def update_handler(configuration: Configuration, mocker: MockerFixture) -> UpdateHandler:
"""
fixture for update handler
:param configuration: configuration fixture
:param mocker: mocker object
:return: update handler test instance
"""
mocker.patch("pathlib.Path.mkdir")
mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_build")
mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_cache")

View File

@ -9,11 +9,18 @@ from ahriman.core.repository.cleaner import Cleaner
def _mock_clear(mocker: MockerFixture) -> None:
"""
mocker helper for clear function
:param mocker: mocker object
"""
mocker.patch("pathlib.Path.iterdir", return_value=[Path("a"), Path("b"), Path("c")])
mocker.patch("shutil.rmtree")
def _mock_clear_check() -> None:
"""
mocker helper for clear tests
"""
shutil.rmtree.assert_has_calls([
mock.call(Path("a")),
mock.call(Path("b")),

View File

@ -6,10 +6,20 @@ from ahriman.core.sign.gpg import GPG
@pytest.fixture
def gpg(configuration: Configuration) -> GPG:
"""
fixture for empty GPG
:param configuration: configuration fixture
:return: GPG test instance
"""
return GPG("x86_64", configuration)
@pytest.fixture
def gpg_with_key(gpg: GPG) -> GPG:
"""
fixture for correct GPG
:param gpg: empty GPG fixture
:return: GPG test instance
"""
gpg.default_key = "key"
return gpg

View File

@ -11,20 +11,38 @@ from ahriman.models.package import Package
# helpers
@pytest.helpers.register
def get_package_status(package: Package) -> Dict[str, Any]:
"""
helper to extract package status from package
:param package: package object
:return: simplified package status map (with only status and view)
"""
return {"status": BuildStatusEnum.Unknown.value, "package": package.view()}
@pytest.helpers.register
def get_package_status_extended(package: Package) -> Dict[str, Any]:
"""
helper to extract package status from package
:param package: package object
:return: full package status map (with timestamped build status and view)
"""
return {"status": BuildStatus().view(), "package": package.view()}
# fixtures
@pytest.fixture
def client() -> Client:
"""
fixture for dummy client
:return: dummy client test instance
"""
return Client()
@pytest.fixture
def web_client() -> WebClient:
"""
fixture for web client
:return: web client test instance
"""
return WebClient("localhost", 8080)

View File

@ -13,10 +13,19 @@ _s3_object = namedtuple("s3_object", ["key", "e_tag", "delete"])
@pytest.fixture
def s3(configuration: Configuration) -> S3:
"""
fixture for S3 synchronization
:param configuration: configuration fixture
:return: S3 test instance
"""
return S3("x86_64", configuration)
@pytest.fixture
def s3_remote_objects() -> List[_s3_object]:
"""
fixture for boto3 like S3 objects
:return: boto3 like S3 objects test instance
"""
delete_mock = MagicMock()
return list(map(lambda item: _s3_object(f"x86_64/{item}", f"\"{item}\"", delete_mock), ["a", "b", "c"]))