|
13 | 13 |
|
14 | 14 | from component_catalog.models import Component |
15 | 15 | from component_catalog.models import Package |
| 16 | +from component_catalog.tests import make_package |
16 | 17 | from dje.filters import DataspaceFilter |
17 | 18 | from dje.models import Dataspace |
18 | 19 | from dje.tests import create_superuser |
|
21 | 22 | from product_portfolio.models import Product |
22 | 23 | from product_portfolio.models import ProductComponent |
23 | 24 | from product_portfolio.models import ProductPackage |
| 25 | +from product_portfolio.tests import make_product_dependency |
24 | 26 |
|
25 | 27 |
|
26 | 28 | class ProductPortfolioAdminsTestCase(TestCase): |
@@ -482,3 +484,58 @@ def test_codebaseresource_admin_changeform_lookup_autocomplete(self): |
482 | 484 | response = self.client.get(url) |
483 | 485 | self.assertEqual(200, response.status_code) |
484 | 486 | self.assertEqual(expected, response.content) |
| 487 | + |
| 488 | + def test_product_dependencies_changelist_search(self): |
| 489 | + self.client.login(username=self.user.username, password="secret") |
| 490 | + changelist_url = reverse("admin:product_portfolio_productdependency_changelist") |
| 491 | + |
| 492 | + package1 = make_package(self.dataspace, "pkg:pypi/django@5.0") |
| 493 | + package2 = make_package(self.dataspace, "pkg:pypi/dep@1.0") |
| 494 | + |
| 495 | + dependency1 = make_product_dependency(self.product1, for_package=package1) |
| 496 | + dependency2 = make_product_dependency( |
| 497 | + self.product1, for_package=package1, resolved_to_package=package2 |
| 498 | + ) |
| 499 | + |
| 500 | + response = self.client.get(changelist_url) |
| 501 | + self.assertEqual(2, response.context_data["cl"].result_count) |
| 502 | + |
| 503 | + response = self.client.get(changelist_url + "?q=django") |
| 504 | + self.assertEqual(2, response.context_data["cl"].result_count) |
| 505 | + |
| 506 | + response = self.client.get(changelist_url + "?q=pkg:pypi/django@5.0") |
| 507 | + self.assertEqual(2, response.context_data["cl"].result_count) |
| 508 | + self.assertIn(dependency1, response.context_data["cl"].result_list) |
| 509 | + self.assertIn(dependency2, response.context_data["cl"].result_list) |
| 510 | + |
| 511 | + response = self.client.get(changelist_url + "?q=dep") |
| 512 | + self.assertEqual(1, response.context_data["cl"].result_count) |
| 513 | + self.assertIn(dependency2, response.context_data["cl"].result_list) |
| 514 | + |
| 515 | + response = self.client.get(changelist_url + "?q=pkg:pypi/dep@1.0") |
| 516 | + self.assertEqual(1, response.context_data["cl"].result_count) |
| 517 | + self.assertIn(dependency2, response.context_data["cl"].result_list) |
| 518 | + |
| 519 | + response = self.client.get(changelist_url + "?q=pypi/dep") |
| 520 | + self.assertEqual(1, response.context_data["cl"].result_count) |
| 521 | + self.assertIn(dependency2, response.context_data["cl"].result_list) |
| 522 | + |
| 523 | + def test_product_dependencies_add_view(self): |
| 524 | + self.client.login(username=self.user.username, password="secret") |
| 525 | + url = reverse("admin:product_portfolio_productdependency_add") |
| 526 | + package2 = make_package(self.dataspace, "pkg:pypi/dep@1.0") |
| 527 | + data = { |
| 528 | + "product": self.product1.pk, |
| 529 | + "dependency_uid": "a7e28b42-2212-456e-9215-9b3760db32c3", |
| 530 | + "for_package": self.package1.pk, |
| 531 | + "resolved_to_package": package2.pk, |
| 532 | + "is_runtime": "on", |
| 533 | + "is_pinned": "on", |
| 534 | + "is_direct": "on", |
| 535 | + } |
| 536 | + |
| 537 | + response = self.client.post(url, data, follow=True) |
| 538 | + self.assertContains(response, "was added successfully") |
| 539 | + dependency = self.product1.dependencies.get() |
| 540 | + self.assertEqual(self.package1, dependency.for_package) |
| 541 | + self.assertEqual(package2, dependency.resolved_to_package) |
0 commit comments