|
35 | 35 | from django.core.files.uploadedfile import SimpleUploadedFile |
36 | 36 | from django.core.management import call_command |
37 | 37 | from django.db import DataError |
| 38 | +from django.db import IntegrityError |
38 | 39 | from django.db import connection |
39 | 40 | from django.test import TestCase |
40 | 41 | from django.test import TransactionTestCase |
|
50 | 51 | from scanpipe.models import ProjectError |
51 | 52 | from scanpipe.models import Run |
52 | 53 | from scanpipe.models import RunInProgressError |
53 | | -from scanpipe.models import WebhookSubscription |
54 | 54 | from scanpipe.models import get_project_work_directory |
55 | 55 | from scanpipe.pipes.fetch import Download |
56 | 56 | from scanpipe.pipes.input import copy_input |
@@ -1261,6 +1261,10 @@ def test_scanpipe_discovered_package_model_update_from_data(self): |
1261 | 1261 | # Already a value, not updated |
1262 | 1262 | self.assertEqual(package_data1["description"], package.description) |
1263 | 1263 |
|
| 1264 | + updated_fields = package.update_from_data(new_data, override=True) |
| 1265 | + self.assertEqual(["description"], updated_fields) |
| 1266 | + self.assertEqual(new_data["description"], package.description) |
| 1267 | + |
1264 | 1268 | def test_scanpipe_model_create_user_creates_auth_token(self): |
1265 | 1269 | basic_user = User.objects.create_user(username="basic_user") |
1266 | 1270 | self.assertTrue(basic_user.auth_token.key) |
@@ -1412,6 +1416,23 @@ def test_scanpipe_discovered_package_model_create_from_data(self): |
1412 | 1416 | self.assertEqual(package_count, DiscoveredPackage.objects.count()) |
1413 | 1417 | self.assertEqual(project_error_count, ProjectError.objects.count()) |
1414 | 1418 |
|
| 1419 | + def test_scanpipe_discovered_package_model_unique_package_uid_in_project(self): |
| 1420 | + project1 = Project.objects.create(name="Analysis") |
| 1421 | + |
| 1422 | + self.assertTrue(package_data1["package_uid"]) |
| 1423 | + package = DiscoveredPackage.create_from_data(project1, package_data1) |
| 1424 | + self.assertTrue(package.package_uid) |
| 1425 | + |
| 1426 | + with self.assertRaises(IntegrityError): |
| 1427 | + DiscoveredPackage.create_from_data(project1, package_data1) |
| 1428 | + |
| 1429 | + package_data_no_uid = package_data1.copy() |
| 1430 | + package_data_no_uid.pop("package_uid") |
| 1431 | + package2 = DiscoveredPackage.create_from_data(project1, package_data_no_uid) |
| 1432 | + self.assertFalse(package2.package_uid) |
| 1433 | + package3 = DiscoveredPackage.create_from_data(project1, package_data_no_uid) |
| 1434 | + self.assertFalse(package3.package_uid) |
| 1435 | + |
1415 | 1436 | @skipIf(connection.vendor == "sqlite", "No max_length constraints on SQLite.") |
1416 | 1437 | def test_scanpipe_codebase_resource_create_and_add_package_errors(self): |
1417 | 1438 | project1 = Project.objects.create(name="Analysis") |
|
0 commit comments