"""Examples integration test fixtures.""" from collections.abc import Generator from minio import Minio import pytest import redis from python_repositories.config import MinioConfig, RedisConfig from tests.integration.minio._containers import ( minio_config_from_env, minio_env, raw_minio_client_from_env, ) from tests.integration.redis._containers import ( raw_redis_client_from_container, redis_config_from_container, redis_uri, ) @pytest.fixture(scope="session") def redis_container() -> Generator[str, None, None]: """Set up a Redis container for testing and yield the Redis URI.""" yield from redis_uri() @pytest.fixture(scope="session") def redis_config(redis_container: str) -> RedisConfig: """Provide RedisConfig built from the test container.""" return redis_config_from_container(redis_container) @pytest.fixture(scope="session") def raw_redis_client(redis_container: str) -> Generator[redis.Redis, None, None]: """Provide a raw Redis client connected to the test Redis container.""" yield from raw_redis_client_from_container(redis_container) @pytest.fixture(scope="session") def minio_container() -> Generator[dict[str, str], None, None]: """Set up a Minio container for testing and yield connection settings.""" yield from minio_env() @pytest.fixture(scope="session") def minio_config(minio_container: dict[str, str]) -> MinioConfig: """Provide MinioConfig built from the test container.""" return minio_config_from_env(minio_container) @pytest.fixture(scope="session") def raw_minio_client(minio_container: dict[str, str]) -> Generator[Minio, None, None]: """Provide a raw Minio client connected to the test Minio container.""" yield from raw_minio_client_from_env(minio_container)