def test_it_sends_text_to_be_translated( mock_requests: mock.Mock, create_adapter: SupportsPerformingTranslations, mock_successful_post_response: mock.Mock, ): # arrange text = 'example text' mock_requests.post.return_value = mock_successful_post_response # act create_adapter.translate(text=text) """ From SPEC.md: > Build a basic web app with a simple input field that takes an English (EN) input translates it to Spanish (ES). we'll always go from en to es. """ # assert mock_requests.post.assert_called_once_with( headers=ANY, url=ANY, data=json.dumps({ 'text': text, 'source_language': 'en', 'target_language': 'es', 'text_format': 'text', }, sort_keys=True) )
def test_it_returns_the_response_uid_on_success( create_adapter: SupportsPerformingTranslations, mock_requests: mock.Mock, ): # arrange text = 'example text' json_response = { "balance": 99943.0, "client": "username", "price": 6.0, "source_language": "en", "status": "new", "target_language": "pt", "text": "Hello, world!", "text_format": "text", "uid": "ac1a53a264" } mock_response = mock.Mock( status_code=201, json=lambda: json_response ) mock_requests.post.return_value = mock_response # act result = create_adapter.translate(text=text) # assert assert_that(result, equal_to(Uid('ac1a53a264')))
def test_it_returns_all_translations_data( mock_requests: mock.Mock, create_adapter: SupportsPerformingTranslations, mock_successful_get_all_response: mock.Mock, ): # arrange mock_requests.get.return_value = mock_successful_get_all_response # act result = create_adapter.get_all_translations() # assert assert_that(result, equal_to([ Translation( uid='30292308e7', status=StatusOption.new, text=None, translated_text=None, ), Translation( uid='30292308e8', status=StatusOption.translating, text=None, translated_text=None, ) ]))
def test_it_throws_if_get_all_request_goes_wrong( mock_requests: mock.Mock, create_adapter: SupportsPerformingTranslations, ): # arrange mock_requests.get.return_value = mock.Mock( status_code=500, text='error message', ) # act with pytest.raises(TranslationFailedException) as e: create_adapter.get_all_translations() # assert assert_that(str(e), contains_string('error message'))
def test_it_throws_if_request_was_unsuccessful( create_adapter: SupportsPerformingTranslations, mock_requests: mock.Mock, ): # arrange text = 'example text' mock_response = mock.Mock( status_code=500, text='error message' ) mock_requests.post.return_value = mock_response # act with pytest.raises(TranslationFailedException) as e: create_adapter.translate(text=text) # assert assert_that(str(e), contains_string('error message'))
def test_it_gets_all_translations_from_url_with_headers( mock_requests: mock.Mock, create_adapter: SupportsPerformingTranslations, mock_successful_get_all_response: mock.Mock, ): # arrange mock_requests.get.return_value = mock_successful_get_all_response # act create_adapter.get_all_translations() # assert mock_requests.get.assert_called_once_with( url='example.com/translation/', headers={ 'Authorization': 'ApiKey charles:123xyz', 'Content-Type': 'application/json', }, )
def test_it_returns_none_if_translation_is_not_found( mock_requests: mock.Mock, create_adapter: SupportsPerformingTranslations, ): # arrange uid = Uid('ac1a53a264') mock_requests.get.return_value = mock.Mock(status_code=404) # act result = create_adapter.get_translation(uid=uid) # assert assert_that(result, is_(None))
def test_it_posts_to_url_with_headers( mock_requests: mock.Mock, create_adapter: SupportsPerformingTranslations, mock_successful_post_response: mock.Mock, ): # arrange text = 'example text' mock_requests.post.return_value = mock_successful_post_response # act create_adapter.translate(text=text) """ Example request taken from https://developers.unbabel.com/docs/tutorial#translating-hello-world """ # assert mock_requests.post.assert_called_once_with( headers={ 'Authorization': 'ApiKey charles:123xyz', 'Content-Type': 'application/json', }, url='example.com/translation', data=ANY, )
def test_it_returns_translation_data( mock_requests: mock.Mock, create_adapter: SupportsPerformingTranslations, mock_successful_get_response: mock.Mock, ): # arrange uid = Uid('ac1a53a264') mock_requests.get.return_value = mock_successful_get_response # act result = create_adapter.get_translation(uid=uid) # assert assert_that(result, equal_to(Translation( uid=uid, status=StatusOption.translating, text='Hello, world!', translated_text=None, )))
def submit_translation(text: str, translation_adapter: SupportsPerformingTranslations, storage_adapter: SupportsStoringUids) -> None: uid = translation_adapter.translate(text=text) storage_adapter.store_uid(uid)