"""Integration tests for ImageRepositoryInterface.""" from uuid import UUID import pytest from PIL import Image from data_store.interfaces import ImageRepositoryInterface def test_get_raises_not_implemented_if_not_overwritten( job_id_list: list[UUID], ) -> None: """Test that calling get on a subclass without get implemented raises NotImplementedError.""" class Incomplete(ImageRepositoryInterface): """A class missing the get method.""" def get(self, image_id: UUID) -> Image.Image | None: return super().get(image_id) # type: ignore def put(self, image: Image.Image, image_id: UUID) -> None: return None def delete(self, image_id: UUID) -> None: return None def list_all(self) -> list[UUID]: return [] instance = Incomplete() with pytest.raises(NotImplementedError): instance.get(job_id_list[0]) def test_put_raises_not_implemented_if_not_overwritten( image: Image.Image, job_id_list: list[UUID], ) -> None: """Test that calling put on a subclass without put implemented raises NotImplementedError.""" class Incomplete(ImageRepositoryInterface): """A class missing the put method.""" def get(self, image_id: UUID) -> Image.Image | None: return None def put(self, image: Image.Image, image_id: UUID) -> None: return super().put(image, image_id) # type: ignore def delete(self, image_id: UUID) -> None: return None def list_all(self) -> list[UUID]: return [] instance = Incomplete() with pytest.raises(NotImplementedError): instance.put(image, job_id_list[0]) def test_delete_raises_not_implemented_if_not_overwritten( job_id_list: list[UUID], ) -> None: """Test that calling delete on a subclass without delete implemented raises NotImplementedError.""" class Incomplete(ImageRepositoryInterface): """A class missing the delete method.""" def get(self, image_id: UUID) -> Image.Image | None: return None def put(self, image: Image.Image, image_id: UUID) -> None: return None def delete(self, image_id: UUID) -> None: return super().delete(image_id) # type: ignore def list_all(self) -> list[UUID]: return [] instance = Incomplete() with pytest.raises(NotImplementedError): instance.delete(job_id_list[0]) def test_list_all_raises_not_implemented_if_not_overwritten() -> None: """Test that calling list_all on a subclass without list_all implemented raises NotImplementedError.""" class Incomplete(ImageRepositoryInterface): """A class missing the list_all method.""" def get(self, image_id: UUID) -> Image.Image | None: return None def put(self, image: Image.Image, image_id: UUID) -> None: return None def delete(self, image_id: UUID) -> None: return None def list_all(self) -> list[UUID]: return super().list_all() # type: ignore instance = Incomplete() with pytest.raises(NotImplementedError): instance.list_all() # Allows local debugging by running file as script if __name__ == "__main__": pytest.main(["-s", "-v", __file__])