|
17 | 17 | from contentcuration.utils.recommendations import EmbedTopicsRequest |
18 | 18 | from contentcuration.utils.recommendations import Recommendations |
19 | 19 | from contentcuration.utils.recommendations import RecommendationsAdapter |
| 20 | +from contentcuration.utils.recommendations import RecommendationsBackendFactory |
20 | 21 | from contentcuration.utils.recommendations import RecommendationsResponse |
21 | 22 |
|
22 | 23 |
|
@@ -391,3 +392,70 @@ def test_extract_content_no_files(self): |
391 | 392 | "files": [], |
392 | 393 | } |
393 | 394 | self.extract_content_test_helper(mock_node, [], expected_result) |
| 395 | + |
| 396 | + |
| 397 | +class RecommendationsBackendFactoryTestCases(TestCase): |
| 398 | + |
| 399 | + def setUp(self): |
| 400 | + self.factory = RecommendationsBackendFactory() |
| 401 | + |
| 402 | + def test_ensure_url_has_scheme_with_no_scheme(self): |
| 403 | + url = "example.com" |
| 404 | + result = self.factory._ensure_url_has_scheme(url) |
| 405 | + self.assertEqual(result, "http://example.com") |
| 406 | + |
| 407 | + def test_ensure_url_has_scheme_with_http(self): |
| 408 | + url = "http://example.com" |
| 409 | + result = self.factory._ensure_url_has_scheme(url) |
| 410 | + self.assertEqual(result, url) |
| 411 | + |
| 412 | + def test_ensure_url_has_scheme_with_https(self): |
| 413 | + url = "https://example.com" |
| 414 | + result = self.factory._ensure_url_has_scheme(url) |
| 415 | + self.assertEqual(result, url) |
| 416 | + |
| 417 | + def test_ensure_url_has_scheme_with_empty_url(self): |
| 418 | + url = "" |
| 419 | + result = self.factory._ensure_url_has_scheme(url) |
| 420 | + self.assertEqual(result, url) |
| 421 | + |
| 422 | + def test_ensure_url_has_scheme_with_none(self): |
| 423 | + url = None |
| 424 | + result = self.factory._ensure_url_has_scheme(url) |
| 425 | + self.assertEqual(result, url) |
| 426 | + |
| 427 | + @patch('contentcuration.utils.recommendations.settings') |
| 428 | + def test_create_backend_with_url_no_scheme(self, mock_settings): |
| 429 | + mock_settings.CURRICULUM_AUTOMATION_API_URL = "api.example.com" |
| 430 | + backend = self.factory.create_backend() |
| 431 | + |
| 432 | + self.assertIsInstance(backend, Recommendations) |
| 433 | + self.assertEqual(backend.base_url, "http://api.example.com") |
| 434 | + self.assertEqual(backend.connect_endpoint, "/connect") |
| 435 | + |
| 436 | + @patch('contentcuration.utils.recommendations.settings') |
| 437 | + def test_create_backend_with_url_with_scheme(self, mock_settings): |
| 438 | + mock_settings.CURRICULUM_AUTOMATION_API_URL = "https://api.example.com" |
| 439 | + backend = self.factory.create_backend() |
| 440 | + |
| 441 | + self.assertIsInstance(backend, Recommendations) |
| 442 | + self.assertEqual(backend.base_url, "https://api.example.com") |
| 443 | + self.assertEqual(backend.connect_endpoint, "/connect") |
| 444 | + |
| 445 | + @patch('contentcuration.utils.recommendations.settings') |
| 446 | + def test_create_backend_with_empty_url(self, mock_settings): |
| 447 | + mock_settings.CURRICULUM_AUTOMATION_API_URL = "" |
| 448 | + backend = self.factory.create_backend() |
| 449 | + |
| 450 | + self.assertIsInstance(backend, Recommendations) |
| 451 | + self.assertEqual(backend.base_url, "") |
| 452 | + self.assertEqual(backend.connect_endpoint, "/connect") |
| 453 | + |
| 454 | + @patch('contentcuration.utils.recommendations.settings') |
| 455 | + def test_create_backend_with_no_url(self, mock_settings): |
| 456 | + mock_settings.CURRICULUM_AUTOMATION_API_URL = None |
| 457 | + backend = self.factory.create_backend() |
| 458 | + |
| 459 | + self.assertIsInstance(backend, Recommendations) |
| 460 | + self.assertEqual(backend.base_url, None) |
| 461 | + self.assertEqual(backend.connect_endpoint, "/connect") |
0 commit comments