From 92f70dc4081183a764fe42828aa4fef23570d9d9 Mon Sep 17 00:00:00 2001 From: dugoalberto Date: Tue, 12 Mar 2024 18:40:26 +0100 Subject: [PATCH 1/2] Fix: ultimati test controller --- .../adapter/_in/web/rename_chat_controller.py | 2 +- .../in}/ask_chatbot_controller_test.py | 0 .../adapter/in/get_chats_controller_test.py | 49 +++++++++++++++++++ ...t_configuration_options_controller_test.py | 22 +++++++++ .../adapter/in/get_configuration_test.py | 21 ++++++++ .../get_document_content_controller_test.py | 30 ++++++++++++ .../in/get_documents_controller_test.py | 43 ++++++++++++++++ .../presentation_domain/new_document_test.py | 0 .../adapter/in/rename_chat_controller_test.py | 20 ++++++++ .../in/upload_documents_controller_test.py | 16 ++++++ 10 files changed, 202 insertions(+), 1 deletion(-) rename 3 - PB/MVP/tests/backend/{domain/adapter/_in/web => adapter/in}/ask_chatbot_controller_test.py (100%) create mode 100644 3 - PB/MVP/tests/backend/adapter/in/get_chats_controller_test.py create mode 100644 3 - PB/MVP/tests/backend/adapter/in/get_configuration_options_controller_test.py create mode 100644 3 - PB/MVP/tests/backend/adapter/in/get_configuration_test.py create mode 100644 3 - PB/MVP/tests/backend/adapter/in/get_document_content_controller_test.py create mode 100644 3 - PB/MVP/tests/backend/adapter/in/get_documents_controller_test.py rename 3 - PB/MVP/tests/backend/{domain/adapter/_in/web => adapter/in}/presentation_domain/new_document_test.py (100%) create mode 100644 3 - PB/MVP/tests/backend/adapter/in/rename_chat_controller_test.py create mode 100644 3 - PB/MVP/tests/backend/adapter/in/upload_documents_controller_test.py diff --git a/3 - PB/MVP/src/backend/adapter/_in/web/rename_chat_controller.py b/3 - PB/MVP/src/backend/adapter/_in/web/rename_chat_controller.py index d807ec65..c24823ef 100644 --- a/3 - PB/MVP/src/backend/adapter/_in/web/rename_chat_controller.py +++ b/3 - PB/MVP/src/backend/adapter/_in/web/rename_chat_controller.py @@ -20,4 +20,4 @@ def renameChat(self, chatId: int, title: str) -> ChatOperationResponse: Returns: ChatOperationResponse: the response of the operation. """ - self.useCase.renameChat(ChatId(chatId), title) \ No newline at end of file + return self.useCase.renameChat(ChatId(chatId), title) \ No newline at end of file diff --git a/3 - PB/MVP/tests/backend/domain/adapter/_in/web/ask_chatbot_controller_test.py b/3 - PB/MVP/tests/backend/adapter/in/ask_chatbot_controller_test.py similarity index 100% rename from 3 - PB/MVP/tests/backend/domain/adapter/_in/web/ask_chatbot_controller_test.py rename to 3 - PB/MVP/tests/backend/adapter/in/ask_chatbot_controller_test.py diff --git a/3 - PB/MVP/tests/backend/adapter/in/get_chats_controller_test.py b/3 - PB/MVP/tests/backend/adapter/in/get_chats_controller_test.py new file mode 100644 index 00000000..a73ac4cf --- /dev/null +++ b/3 - PB/MVP/tests/backend/adapter/in/get_chats_controller_test.py @@ -0,0 +1,49 @@ +from typing import List + +from adapter._in.web.get_chats_controller import GetChatsController +from domain.chat.chat_filter import ChatFilter +from domain.chat.chat_preview import ChatPreview +from domain.chat.message import MessageSender +from domain.chat.message_response import MessageResponse +from domain.chat.message import Message +from domain.chat.chat_id import ChatId +from domain.document.document_id import DocumentId +import unittest + + +def test_getChats_with_filter(mocker): + useCaseMock = mocker.Mock() + useCaseMock.getChats.return_value = [ChatPreview(id = ChatId(1), + title = "title", + lastMessage = Message("message", + unittest.mock.ANY, + [DocumentId("documentId1"), DocumentId("documentId2")], + MessageSender.USER))] + + getChatsController = GetChatsController(useCaseMock) + with unittest.mock.patch('adapter._in.web.get_chats_controller.ChatFilter') as MockChatFilter: + + MockChatFilter.return_value = ChatFilter("filter") + response = getChatsController.getChats("filter") + + MockChatFilter.assert_called_once_with("filter") + assert isinstance(response[0], ChatPreview) + + +def test_getChats_without_filter(mocker): + useCaseMock = mocker.Mock() + useCaseMock.getChats.return_value = [ChatPreview(id=ChatId(1), + title="title", + lastMessage=Message("message", + unittest.mock.ANY, + [DocumentId("documentId1"), + DocumentId("documentId2")], + MessageSender.USER))] + + getChatsController = GetChatsController(useCaseMock) + with unittest.mock.patch('adapter._in.web.get_chats_controller.ChatFilter') as MockChatFilter: + MockChatFilter.return_value = ChatFilter("") + response = getChatsController.getChats("") + + MockChatFilter.assert_called_once_with("") + assert isinstance(response[0], ChatPreview) \ No newline at end of file diff --git a/3 - PB/MVP/tests/backend/adapter/in/get_configuration_options_controller_test.py b/3 - PB/MVP/tests/backend/adapter/in/get_configuration_options_controller_test.py new file mode 100644 index 00000000..83070f7e --- /dev/null +++ b/3 - PB/MVP/tests/backend/adapter/in/get_configuration_options_controller_test.py @@ -0,0 +1,22 @@ +import unittest + +from _in.web.get_configuration_options_controller import GetConfigurationOptionsController +from domain.configuration.configuration_options import ConfigurationOptions +from domain.configuration.document_store_configuration import DocumentStoreType, DocumentStoreConfiguration +from domain.configuration.embedding_model_configuration import EmbeddingModelConfiguration, EmbeddingModelType +from domain.configuration.llm_model_configuration import LLMModelType, LLMModelConfiguration +from domain.configuration.vector_store_configuration import VectorStoreType, VectorStoreConfiguration + + +def test_askChatbot_with_existent_chat(mocker): + useCaseMock = mocker.Mock() + vectorStoreConfiguration = [VectorStoreConfiguration(name=VectorStoreType.PINECONE, organization="organization", description="description", type="type", costIndicator="12")] + embeddingModel= [EmbeddingModelConfiguration(name=EmbeddingModelType.OPENAI, organization="organization", description="description", type="type", costIndicator="12")] + LLMModel = [LLMModelConfiguration(name=LLMModelType.OPENAI, organization="organization", description="description", type="type", costIndicator="12")] + documentStore= [DocumentStoreConfiguration(name=DocumentStoreType.AWS, organization="organization", description="description", type="type", costIndicator="12")] + useCaseMock.getConfigurationOptions.return_value = ConfigurationOptions(vectorStoreConfiguration, embeddingModel, LLMModel, documentStore) + + getConfigurationOptions = GetConfigurationOptionsController(useCaseMock) + response = getConfigurationOptions.getConfigurationOptions() + + assert isinstance(response, ConfigurationOptions) \ No newline at end of file diff --git a/3 - PB/MVP/tests/backend/adapter/in/get_configuration_test.py b/3 - PB/MVP/tests/backend/adapter/in/get_configuration_test.py new file mode 100644 index 00000000..b3428ccc --- /dev/null +++ b/3 - PB/MVP/tests/backend/adapter/in/get_configuration_test.py @@ -0,0 +1,21 @@ +import unittest +from adapter._in.web.get_configuration_controller import GetConfigurationController +from domain.configuration.configuration import Configuration +from domain.configuration.document_store_configuration import DocumentStoreType, DocumentStoreConfiguration +from domain.configuration.embedding_model_configuration import EmbeddingModelConfiguration, EmbeddingModelType +from domain.configuration.llm_model_configuration import LLMModelType, LLMModelConfiguration +from domain.configuration.vector_store_configuration import VectorStoreType, VectorStoreConfiguration + + +def test_askChatbot_with_existent_chat(mocker): + useCaseMock = mocker.Mock() + vectorStoreConfiguration = VectorStoreConfiguration(name=VectorStoreType.PINECONE, organization="organization", description="description", type="type", costIndicator="12") + embeddingModel= EmbeddingModelConfiguration(name=EmbeddingModelType.OPENAI, organization="organization", description="description", type="type", costIndicator="12") + LLMModel = LLMModelConfiguration(name=LLMModelType.OPENAI, organization="organization", description="description", type="type", costIndicator="12") + documentStore= DocumentStoreConfiguration(name=DocumentStoreType.AWS, organization="organization", description="description", type="type", costIndicator="12") + useCaseMock.getConfiguration.return_value = Configuration(vectorStoreConfiguration, embeddingModel, LLMModel, documentStore) + + getConfiguration = GetConfigurationController(useCaseMock) + response = getConfiguration.getConfiguration() + + assert isinstance(response, Configuration) \ No newline at end of file diff --git a/3 - PB/MVP/tests/backend/adapter/in/get_document_content_controller_test.py b/3 - PB/MVP/tests/backend/adapter/in/get_document_content_controller_test.py new file mode 100644 index 00000000..1f128323 --- /dev/null +++ b/3 - PB/MVP/tests/backend/adapter/in/get_document_content_controller_test.py @@ -0,0 +1,30 @@ +import unittest + +from adapter._in.web.get_document_content_controller import GetDocumentContentController +from domain.document.document import Document +from domain.document.document_content import DocumentContent +from domain.document.document_id import DocumentId +from domain.document.document_metadata import DocumentType, DocumentMetadata +from domain.document.document_status import DocumentStatus, Status +from domain.document.plain_document import PlainDocument + + +def test_get_document_content_with_id(mocker): + useCaseMock = mocker.Mock() + documentStatus = DocumentStatus(Status.ENABLED) + plainDocument = PlainDocument(DocumentMetadata(DocumentId("Prova.pdf"), DocumentType.PDF, 12, unittest.mock.ANY), + DocumentContent(b'content') + ) + #getDocumentsContent รจ quello che simula la chiamata dello use case + useCaseMock.getDocumentsContent.return_value = [Document(documentStatus, plainDocument)] + + with unittest.mock.patch('adapter._in.web.get_document_content_controller.DocumentId') as mockDocumentId: + mockDocumentId.return_value = DocumentId("Prova.pdf") + + documentContentController = GetDocumentContentController(useCaseMock) + + response = documentContentController.getDocumentContent("Prova.pdf") + mockDocumentId.assert_called_once_with("Prova.pdf") + + assert isinstance(response, Document) + diff --git a/3 - PB/MVP/tests/backend/adapter/in/get_documents_controller_test.py b/3 - PB/MVP/tests/backend/adapter/in/get_documents_controller_test.py new file mode 100644 index 00000000..36d6e46f --- /dev/null +++ b/3 - PB/MVP/tests/backend/adapter/in/get_documents_controller_test.py @@ -0,0 +1,43 @@ +import unittest + +from adapter._in.web.get_documents_controller import GetDocumentsController +from adapter._in.web.get_document_content_controller import GetDocumentContentController +from api_exceptions import APIElaborationException +from domain.document.document import Document +from domain.document.document_content import DocumentContent +from domain.document.document_filter import DocumentFilter +from domain.document.document_id import DocumentId +from domain.document.document_metadata import DocumentType, DocumentMetadata +from domain.document.document_status import DocumentStatus, Status +from domain.document.light_document import LightDocument +from domain.document.plain_document import PlainDocument + + +def test_get_document_content_with_id(mocker): + useCaseMock = mocker.Mock() + documentStatus = DocumentStatus(Status.ENABLED) + documentMetadata = DocumentMetadata(DocumentId("Prova.pdf"), DocumentType.PDF, 12, unittest.mock.ANY) + useCaseMock.getDocuments.return_value = [LightDocument(documentStatus, documentMetadata)] + + with unittest.mock.patch('adapter._in.web.get_documents_controller.DocumentFilter') as mockDocumentFilter: + mockDocumentFilter.return_value = DocumentFilter("searchFilter") + + getDocumentsController = GetDocumentsController(useCaseMock) + + response = getDocumentsController.getDocuments("searchFilter") + mockDocumentFilter.assert_called_once_with("searchFilter") + + assert isinstance(response[0], LightDocument) + +def test_get_document_content_withException(mocker): + useCaseMock = mocker.Mock() + useCaseMock.getDocuments.side_effect = APIElaborationException("message") + + with unittest.mock.patch('adapter._in.web.get_documents_controller.DocumentFilter') as mockDocumentFilter: + mockDocumentFilter.return_value = DocumentId("1") + getDocumentsController = GetDocumentsController(useCaseMock) + try: + response = getDocumentsController.getDocuments("1") + assert False + except APIElaborationException as e: + assert True diff --git a/3 - PB/MVP/tests/backend/domain/adapter/_in/web/presentation_domain/new_document_test.py b/3 - PB/MVP/tests/backend/adapter/in/presentation_domain/new_document_test.py similarity index 100% rename from 3 - PB/MVP/tests/backend/domain/adapter/_in/web/presentation_domain/new_document_test.py rename to 3 - PB/MVP/tests/backend/adapter/in/presentation_domain/new_document_test.py diff --git a/3 - PB/MVP/tests/backend/adapter/in/rename_chat_controller_test.py b/3 - PB/MVP/tests/backend/adapter/in/rename_chat_controller_test.py new file mode 100644 index 00000000..e98c0449 --- /dev/null +++ b/3 - PB/MVP/tests/backend/adapter/in/rename_chat_controller_test.py @@ -0,0 +1,20 @@ +import unittest + +from adapter._in.web.rename_chat_controller import RenameChatController +from domain.chat.chat_id import ChatId +from domain.chat.chat_operation_response import ChatOperationResponse + + +def test_rename_chat_with_id(mocker): + useCaseMock = mocker.Mock() + useCaseMock.renameChat.return_value = ChatOperationResponse(True,"message",ChatId(1)) + + with unittest.mock.patch('adapter._in.web.rename_chat_controller.ChatId') as mockChatId: + mockChatId.return_value = ChatId(1) + + renameChatController = RenameChatController(useCaseMock) + + response = renameChatController.renameChat(1, "title") + mockChatId.assert_called_once_with(1) + + assert isinstance(response, ChatOperationResponse) \ No newline at end of file diff --git a/3 - PB/MVP/tests/backend/adapter/in/upload_documents_controller_test.py b/3 - PB/MVP/tests/backend/adapter/in/upload_documents_controller_test.py new file mode 100644 index 00000000..23fc0ede --- /dev/null +++ b/3 - PB/MVP/tests/backend/adapter/in/upload_documents_controller_test.py @@ -0,0 +1,16 @@ +import unittest + +from adapter._in.web.presentation_domain.new_document import NewDocument +from adapter._in.web.upload_documents_controller import UploadDocumentsController +from domain.document.document_id import DocumentId +from domain.document.document_operation_response import DocumentOperationResponse + + +def test_rename_chat_with_id(mocker): + useCaseMock = mocker.Mock() + useCaseMock.uploadDocuments.return_value = [DocumentOperationResponse(DocumentId('123'), True, 'message')] + uploadDocumentsController = UploadDocumentsController(useCaseMock) + + response = uploadDocumentsController.uploadDocuments([NewDocument('123', 'pdf', 1.0, b'content')], False) + + assert isinstance(response[0], DocumentOperationResponse) \ No newline at end of file From 6d1bedfe555252494d698a434237feb30000792c Mon Sep 17 00:00:00 2001 From: dugoalberto Date: Tue, 12 Mar 2024 18:59:14 +0100 Subject: [PATCH 2/2] Fix: ultimati test controller --- .../_in/web/ask_chatbot_controller_test.py | 4 +- .../web}/get_chats_controller_test.py | 0 ...t_configuration_options_controller_test.py | 0 .../{in => _in/web}/get_configuration_test.py | 0 .../get_document_content_controller_test.py | 0 .../web}/get_documents_controller_test.py | 0 .../web}/rename_chat_controller_test.py | 0 .../web}/upload_documents_controller_test.py | 0 .../adapter/in/ask_chatbot_controller_test.py | 56 ----------- .../presentation_domain/new_document_test.py | 96 ------------------- 10 files changed, 2 insertions(+), 154 deletions(-) rename 3 - PB/MVP/tests/backend/adapter/{in => _in/web}/get_chats_controller_test.py (100%) rename 3 - PB/MVP/tests/backend/adapter/{in => _in/web}/get_configuration_options_controller_test.py (100%) rename 3 - PB/MVP/tests/backend/adapter/{in => _in/web}/get_configuration_test.py (100%) rename 3 - PB/MVP/tests/backend/adapter/{in => _in/web}/get_document_content_controller_test.py (100%) rename 3 - PB/MVP/tests/backend/adapter/{in => _in/web}/get_documents_controller_test.py (100%) rename 3 - PB/MVP/tests/backend/adapter/{in => _in/web}/rename_chat_controller_test.py (100%) rename 3 - PB/MVP/tests/backend/adapter/{in => _in/web}/upload_documents_controller_test.py (100%) delete mode 100644 3 - PB/MVP/tests/backend/adapter/in/ask_chatbot_controller_test.py delete mode 100644 3 - PB/MVP/tests/backend/adapter/in/presentation_domain/new_document_test.py diff --git a/3 - PB/MVP/tests/backend/adapter/_in/web/ask_chatbot_controller_test.py b/3 - PB/MVP/tests/backend/adapter/_in/web/ask_chatbot_controller_test.py index 4555fe3c..20bde4c0 100644 --- a/3 - PB/MVP/tests/backend/adapter/_in/web/ask_chatbot_controller_test.py +++ b/3 - PB/MVP/tests/backend/adapter/_in/web/ask_chatbot_controller_test.py @@ -1,6 +1,6 @@ - +from adapter._in.web.ask_chatbot_controller import AskChatbotController from domain.chat.message_response import MessageResponse -from domain.chat.message import Message +from domain.chat.message import Message, MessageSender from domain.chat.chat_id import ChatId from domain.document.document_id import DocumentId import unittest diff --git a/3 - PB/MVP/tests/backend/adapter/in/get_chats_controller_test.py b/3 - PB/MVP/tests/backend/adapter/_in/web/get_chats_controller_test.py similarity index 100% rename from 3 - PB/MVP/tests/backend/adapter/in/get_chats_controller_test.py rename to 3 - PB/MVP/tests/backend/adapter/_in/web/get_chats_controller_test.py diff --git a/3 - PB/MVP/tests/backend/adapter/in/get_configuration_options_controller_test.py b/3 - PB/MVP/tests/backend/adapter/_in/web/get_configuration_options_controller_test.py similarity index 100% rename from 3 - PB/MVP/tests/backend/adapter/in/get_configuration_options_controller_test.py rename to 3 - PB/MVP/tests/backend/adapter/_in/web/get_configuration_options_controller_test.py diff --git a/3 - PB/MVP/tests/backend/adapter/in/get_configuration_test.py b/3 - PB/MVP/tests/backend/adapter/_in/web/get_configuration_test.py similarity index 100% rename from 3 - PB/MVP/tests/backend/adapter/in/get_configuration_test.py rename to 3 - PB/MVP/tests/backend/adapter/_in/web/get_configuration_test.py diff --git a/3 - PB/MVP/tests/backend/adapter/in/get_document_content_controller_test.py b/3 - PB/MVP/tests/backend/adapter/_in/web/get_document_content_controller_test.py similarity index 100% rename from 3 - PB/MVP/tests/backend/adapter/in/get_document_content_controller_test.py rename to 3 - PB/MVP/tests/backend/adapter/_in/web/get_document_content_controller_test.py diff --git a/3 - PB/MVP/tests/backend/adapter/in/get_documents_controller_test.py b/3 - PB/MVP/tests/backend/adapter/_in/web/get_documents_controller_test.py similarity index 100% rename from 3 - PB/MVP/tests/backend/adapter/in/get_documents_controller_test.py rename to 3 - PB/MVP/tests/backend/adapter/_in/web/get_documents_controller_test.py diff --git a/3 - PB/MVP/tests/backend/adapter/in/rename_chat_controller_test.py b/3 - PB/MVP/tests/backend/adapter/_in/web/rename_chat_controller_test.py similarity index 100% rename from 3 - PB/MVP/tests/backend/adapter/in/rename_chat_controller_test.py rename to 3 - PB/MVP/tests/backend/adapter/_in/web/rename_chat_controller_test.py diff --git a/3 - PB/MVP/tests/backend/adapter/in/upload_documents_controller_test.py b/3 - PB/MVP/tests/backend/adapter/_in/web/upload_documents_controller_test.py similarity index 100% rename from 3 - PB/MVP/tests/backend/adapter/in/upload_documents_controller_test.py rename to 3 - PB/MVP/tests/backend/adapter/_in/web/upload_documents_controller_test.py diff --git a/3 - PB/MVP/tests/backend/adapter/in/ask_chatbot_controller_test.py b/3 - PB/MVP/tests/backend/adapter/in/ask_chatbot_controller_test.py deleted file mode 100644 index e12cb437..00000000 --- a/3 - PB/MVP/tests/backend/adapter/in/ask_chatbot_controller_test.py +++ /dev/null @@ -1,56 +0,0 @@ -from adapter._in.web.ask_chatbot_controller import AskChatbotController -from domain.chat.message import MessageSender - -from domain.chat.message_response import MessageResponse -from domain.chat.message import Message -from domain.chat.chat_id import ChatId -from domain.document.document_id import DocumentId -import unittest - -def test_askChatbot_with_existent_chat(mocker): - useCaseMock = mocker.Mock() - useCaseMock.askChatbot.return_value = MessageResponse(True, Message("response", unittest.mock.ANY, None, MessageSender.CHATBOT), ChatId(1)) - - askChatbotController = AskChatbotController(useCaseMock) - - with unittest.mock.patch('adapter._in.web.ask_chatbot_controller.ChatId') as MockChatId, \ - unittest.mock.patch('adapter._in.web.ask_chatbot_controller.Message') as MockMessage: - - MockChatId.return_value = ChatId(1) - MockMessage.return_value = Message("response", unittest.mock.ANY, None, MessageSender.CHATBOT) - - response = askChatbotController.askChatbot("message", 1) - - MockChatId.assert_called_once_with(1) - MockMessage.assert_called_once_with( - "message", - unittest.mock.ANY, - None, - MessageSender.USER - ) - - assert isinstance(response, MessageResponse) - -def test_askChatbot_without_chat(mocker): - useCaseMock = mocker.Mock() - useCaseMock.askChatbot.return_value = MessageResponse(True, Message("response", unittest.mock.ANY, None, MessageSender.CHATBOT), ChatId(1)) - - askChatbotController = AskChatbotController(useCaseMock) - - with unittest.mock.patch('adapter._in.web.ask_chatbot_controller.ChatId') as MockChatId, \ - unittest.mock.patch('adapter._in.web.ask_chatbot_controller.Message') as MockMessage: - - MockChatId.return_value = ChatId(1) - MockMessage.return_value = Message("response", unittest.mock.ANY, [DocumentId("example.pdf")], MessageSender.CHATBOT) - - response = askChatbotController.askChatbot("message") - - MockChatId.assert_not_called() - MockMessage.assert_called_once_with( - "message", - unittest.mock.ANY, - None, - MessageSender.USER - ) - - assert isinstance(response, MessageResponse) \ No newline at end of file diff --git a/3 - PB/MVP/tests/backend/adapter/in/presentation_domain/new_document_test.py b/3 - PB/MVP/tests/backend/adapter/in/presentation_domain/new_document_test.py deleted file mode 100644 index b17b2bd9..00000000 --- a/3 - PB/MVP/tests/backend/adapter/in/presentation_domain/new_document_test.py +++ /dev/null @@ -1,96 +0,0 @@ -import unittest - -from adapter._in.web.presentation_domain.new_document import NewDocument -from domain.document.document_status import Status -from domain.document.document_metadata import DocumentType - -from domain.document.document_status import DocumentStatus -from domain.document.document_metadata import DocumentMetadata -from domain.document.document_id import DocumentId -from domain.document.plain_document import PlainDocument -from domain.document.document_content import DocumentContent -from domain.document.document import Document - -def test_toDocument_pdf_type(): - newDocument = NewDocument('123', 'pdf', 1.0, b'content') - - with unittest.mock.patch('adapter._in.web.presentation_domain.new_document.Document') as MockDocument, \ - unittest.mock.patch('adapter._in.web.presentation_domain.new_document.DocumentMetadata') as MockDocumentMetadata, \ - unittest.mock.patch('adapter._in.web.presentation_domain.new_document.DocumentStatus') as MockDocumentStatus, \ - unittest.mock.patch('adapter._in.web.presentation_domain.new_document.PlainDocument') as MockPlainDocument, \ - unittest.mock.patch('adapter._in.web.presentation_domain.new_document.DocumentContent') as MockDocumentContent, \ - unittest.mock.patch('adapter._in.web.presentation_domain.new_document.DocumentId') as MockDocumentId: - - MockDocumentContent.return_value = DocumentContent(b'content') - MockDocumentId.return_value = DocumentId('123') - MockDocumentMetadata.return_value = DocumentMetadata(DocumentId('123'), DocumentType.PDF, 1.0, unittest.mock.ANY) - MockPlainDocument.return_value = PlainDocument(DocumentMetadata(DocumentId('123'), DocumentType.PDF, 1.0, unittest.mock.ANY), DocumentContent(b'content')) - MockDocumentStatus.return_value = DocumentStatus(Status.ENABLED) - MockDocument.return_value = Document(DocumentStatus(Status.ENABLED), PlainDocument(DocumentMetadata(DocumentId('123'), DocumentType.PDF, 1.0, unittest.mock.ANY), DocumentContent(b'content'))) - - document = newDocument.toDocument() - - MockDocument.assert_called_once_with( - DocumentStatus(Status.ENABLED), - PlainDocument( - MockDocumentMetadata.return_value, - DocumentContent(b'content') - ) - ) - MockDocumentMetadata.assert_called_once_with( - DocumentId('123'), - DocumentType.PDF, - 1.0, - unittest.mock.ANY - ) - MockDocumentStatus.assert_called_once_with(Status.ENABLED) - MockPlainDocument.assert_called_once_with( - MockDocumentMetadata.return_value, - DocumentContent(b'content') - ) - MockDocumentContent.assert_called_once_with(b'content') - MockDocumentId.assert_called_once_with('123') - - assert isinstance(document, Document) - -def test_toDocument_docx_type(): - newDocument = NewDocument('123', 'docx', 1.0, b'content') - - with unittest.mock.patch('adapter._in.web.presentation_domain.new_document.Document') as MockDocument, \ - unittest.mock.patch('adapter._in.web.presentation_domain.new_document.DocumentMetadata') as MockDocumentMetadata, \ - unittest.mock.patch('adapter._in.web.presentation_domain.new_document.DocumentStatus') as MockDocumentStatus, \ - unittest.mock.patch('adapter._in.web.presentation_domain.new_document.PlainDocument') as MockPlainDocument, \ - unittest.mock.patch('adapter._in.web.presentation_domain.new_document.DocumentContent') as MockDocumentContent, \ - unittest.mock.patch('adapter._in.web.presentation_domain.new_document.DocumentId') as MockDocumentId: - - MockDocumentContent.return_value = DocumentContent(b'content') - MockDocumentId.return_value = DocumentId('123') - MockDocumentMetadata.return_value = DocumentMetadata(DocumentId('123'), DocumentType.DOCX, 1.0, unittest.mock.ANY) - MockPlainDocument.return_value = PlainDocument(DocumentMetadata(DocumentId('123'), DocumentType.DOCX, 1.0, unittest.mock.ANY), DocumentContent(b'content')) - MockDocumentStatus.return_value = DocumentStatus(Status.ENABLED) - MockDocument.return_value = Document(DocumentStatus(Status.ENABLED), PlainDocument(DocumentMetadata(DocumentId('123'), DocumentType.DOCX, 1.0, unittest.mock.ANY), DocumentContent(b'content'))) - - document = newDocument.toDocument() - - MockDocument.assert_called_once_with( - DocumentStatus(Status.ENABLED), - PlainDocument( - MockDocumentMetadata.return_value, - DocumentContent(b'content') - ) - ) - MockDocumentMetadata.assert_called_once_with( - DocumentId('123'), - DocumentType.DOCX, - 1.0, - unittest.mock.ANY - ) - MockDocumentStatus.assert_called_once_with(Status.ENABLED) - MockPlainDocument.assert_called_once_with( - MockDocumentMetadata.return_value, - DocumentContent(b'content') - ) - MockDocumentContent.assert_called_once_with(b'content') - MockDocumentId.assert_called_once_with('123') - - assert isinstance(document, Document) \ No newline at end of file