Source code for betty.test_utils.config.collections.mapping

"""
Test utilities for :py:mod:`betty.config.collections.mapping`.
"""

from __future__ import annotations

from typing import Generic, TypeVar

from typing_extensions import override

from betty.config import Configuration
from betty.config.collections import ConfigurationKey
from betty.test_utils.config.collections import ConfigurationCollectionTestBase

_ConfigurationT = TypeVar("_ConfigurationT", bound=Configuration)
_ConfigurationKeyT = TypeVar("_ConfigurationKeyT", bound=ConfigurationKey)


class _ConfigurationMappingTestBase(
    Generic[_ConfigurationKeyT, _ConfigurationT],
    ConfigurationCollectionTestBase[_ConfigurationKeyT, _ConfigurationT],
):
    @override
    async def test___iter__(self) -> None:
        configurations = await self.get_configurations()
        sut = await self.get_sut(
            [
                configurations[0],
                configurations[1],
            ]
        )
        assert list(iter(sut)) == [
            self.get_configuration_keys()[0],
            self.get_configuration_keys()[1],
        ]

    async def test___contains__(self) -> None:
        """
        Tests :py:meth:`betty.config.collections.mapping.ConfigurationMapping.__contains__` implementations.
        """
        configurations = await self.get_configurations()
        keys = self.get_configuration_keys()
        sut = await self.get_sut(
            [
                configurations[0],
                configurations[1],
            ]
        )
        assert keys[0] in sut
        assert keys[1] in sut
        assert keys[2] not in sut
        assert keys[3] not in sut


[docs] class ConfigurationMappingTestBase( Generic[_ConfigurationKeyT, _ConfigurationT], _ConfigurationMappingTestBase[_ConfigurationKeyT, _ConfigurationT], ): """ A base class for testing :py:class:`betty.config.collections.mapping.ConfigurationMapping` implementations. """ pass
[docs] class OrderedConfigurationMappingTestBase( Generic[_ConfigurationKeyT, _ConfigurationT], _ConfigurationMappingTestBase[_ConfigurationKeyT, _ConfigurationT], ): """ A base class for testing :py:class:`betty.config.collections.mapping.OrderedConfigurationMapping` implementations. """ pass