"""Integration tests for example domain repositories.""" from collections.abc import Generator from io import BytesIO import random import pytest from python_repositories.examples.artifact_object_repository import ( ArtifactObjectRepository, ) from python_repositories.examples.user_json_repository import UserJsonRepository @pytest.fixture(scope="module") def user_data() -> Generator[dict[str, str]]: """Provide sample user data for tests.""" yield {"name": "Alice", "email": "alice@example.com"} @pytest.fixture(scope="module") def artifact_data() -> Generator[BytesIO]: """Provide sample artifact data for tests.""" yield BytesIO(random.randbytes(2**20)) def test_user_json_repository_save_and_get( redis_container: str, user_data: dict[str, str], ) -> None: """Test that UserJsonRepository can save and retrieve a user.""" with UserJsonRepository() as repo: repo.save_user("alice", user_data) assert repo.get_user("alice") == user_data def test_user_json_repository_delete( redis_container: str, user_data: dict[str, str], ) -> None: """Test that UserJsonRepository can delete a user.""" with UserJsonRepository() as repo: repo.save_user("alice", user_data) repo.delete_user("alice") assert repo.get_user("alice") is None def test_artifact_object_repository_store_and_get( minio_container: dict[str, str], artifact_data: BytesIO, ) -> None: """Test that ArtifactObjectRepository can store and retrieve an artifact.""" with ArtifactObjectRepository() as repo: repo.store_artifact("report-1", artifact_data) received = repo.get_artifact("report-1") assert received is not None artifact_data.seek(0) assert received.read() == artifact_data.read()