diff --git a/contentcuration/automation/tests/appnexus/test_base.py b/contentcuration/automation/tests/appnexus/test_base.py index cd3d5c0047..7944e00e4f 100644 --- a/contentcuration/automation/tests/appnexus/test_base.py +++ b/contentcuration/automation/tests/appnexus/test_base.py @@ -1,3 +1,5 @@ +import pytest + from automation.utils.appnexus.base import Adapter from automation.utils.appnexus.base import Backend @@ -19,6 +21,11 @@ def mockoperation(self): pass +def test_backend_error(): + with pytest.raises(NotImplementedError) as error: + Backend.get_instance() + assert "Subclasses should implement the creation of instance" in str(error.value) + def test_backend_singleton(): b1, b2 = MockBackend.get_instance(), MockBackend.get_instance() assert id(b1) == id(b2) diff --git a/contentcuration/contentcuration/utils/transcription.py b/contentcuration/contentcuration/utils/transcription.py new file mode 100644 index 0000000000..105b1b0608 --- /dev/null +++ b/contentcuration/contentcuration/utils/transcription.py @@ -0,0 +1,44 @@ +from automation.utils.appnexus.base import Adapter +from automation.utils.appnexus.base import Backend +from automation.utils.appnexus.base import BackendFactory +from automation.utils.appnexus.base import BackendRequest +from automation.utils.appnexus.base import BackendResponse + + +class WhisperRequest(BackendRequest): + def __init__(self) -> None: + super().__init__() + +class WhisperResponse(BackendResponse): + def __init__(self) -> None: + super().__init__() + + +class Whisper(Backend): + def connect(self) -> None: + raise NotImplementedError("The 'connect' method is not implemented for the 'Whisper' backend.") + + def make_request(self, request: WhisperRequest) -> WhisperResponse: + # Implement production backend here. + pass + + @classmethod + def _create_instance(cls) -> 'Whisper': + return cls() + +class LocalWhisper(Backend): + def make_request(self, request: WhisperRequest) -> WhisperResponse: + # Implement your local backend here. + pass + + +class WhisperBackendFactory(BackendFactory): + def create_backend(self) -> Backend: + # Return backend based on some setting. + return super().create_backend() + + +class WhisperAdapter(Adapter): + def transcribe(self, caption_file_id: str) -> WhisperResponse: + request = WhisperRequest() + return self.backend.make_request(request)