|
| 1 | +import unittest |
| 2 | +from unittest import mock |
| 3 | + |
| 4 | +from django.test import override_settings |
1 | 5 | from django.conf import settings |
2 | 6 | from django.core import management |
3 | 7 | from django.contrib.auth.models import User, Permission |
4 | 8 | from main.test_case import APITestCase |
5 | 9 |
|
| 10 | +from lang.translation import IfrcTranslator |
| 11 | + |
6 | 12 | from .serializers import LanguageBulkActionSerializer |
7 | 13 | from .models import String |
8 | 14 |
|
@@ -153,3 +159,44 @@ def test_lang_api_permissions(self): |
153 | 159 | self.authenticate(user) |
154 | 160 | resp = self.client.post(f'/api/v2/language/{language}/bulk-action/', data, format='json') |
155 | 161 | self.assertEqual(resp.status_code, 200) |
| 162 | + |
| 163 | + |
| 164 | +class TranslatorMockTest(unittest.TestCase): |
| 165 | + |
| 166 | + @mock.patch('lang.translation.requests') |
| 167 | + def test_ifrc_translator(self, requests_mock): |
| 168 | + # Simple mock test where we define what the expected response is from provider |
| 169 | + requests_mock.post.return_value.json.return_value = [{ |
| 170 | + "detectedLanguage": {"language": "en", "score": 1}, |
| 171 | + "translations": [{"text": "Hola", "to": "es"}] |
| 172 | + }] |
| 173 | + |
| 174 | + # Without valid settings provided |
| 175 | + for settings_params in [ |
| 176 | + dict(), |
| 177 | + dict( |
| 178 | + IFRC_TRANSLATION_GET_API_KEY='dummy-api-param-key', |
| 179 | + IFRC_TRANSLATION_HEADER_API_KEY='dummy-api-header-key', |
| 180 | + ), |
| 181 | + dict(IFRC_TRANSLATION_HEADER_API_KEY='dummy-api-header-key'), |
| 182 | + ]: |
| 183 | + with override_settings( |
| 184 | + AUTO_TRANSLATION_TRANSLATOR='lang.translation.IfrcTranslator', |
| 185 | + **settings_params, |
| 186 | + ): |
| 187 | + with self.assertRaises(Exception): |
| 188 | + IfrcTranslator() |
| 189 | + |
| 190 | + # With valid settings provided |
| 191 | + with override_settings( |
| 192 | + AUTO_TRANSLATION_TRANSLATOR='lang.translation.IfrcTranslator', |
| 193 | + IFRC_TRANSLATION_DOMAIN='http://example.org', |
| 194 | + IFRC_TRANSLATION_GET_API_KEY='dummy-api-param-key', |
| 195 | + IFRC_TRANSLATION_HEADER_API_KEY='dummy-api-header-key', |
| 196 | + ): |
| 197 | + # with settings.TESTING True |
| 198 | + ifrc_translator = IfrcTranslator() |
| 199 | + assert ifrc_translator.translate_text('hello', 'es') == 'hello translated to "es" using source language "None"' |
| 200 | + # with settings.TESTING False |
| 201 | + with override_settings(TESTING=False): |
| 202 | + assert ifrc_translator.translate_text('hello', 'es') == "Hola" |
0 commit comments