added infrastructure code
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
"""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__])
|
||||
Reference in New Issue
Block a user