@@ -2598,9 +2598,9 @@ def test_package_model_update_from_purldb(self, mock_get_purldb_entries):
25982598 }
25992599
26002600 mock_get_purldb_entries .return_value = [purldb_entry ]
2601- package1 = Package .objects .create (
2601+ package1 = make_package (
2602+ self .dataspace ,
26022603 filename = "package" ,
2603- dataspace = self .dataspace ,
26042604 # "unknown" values are overrided
26052605 declared_license_expression = "unknown" ,
26062606 )
@@ -2628,6 +2628,38 @@ def test_package_model_update_from_purldb(self, mock_get_purldb_entries):
26282628 for field_name in updated_fields :
26292629 self .assertEqual (purldb_entry [field_name ], getattr (package1 , field_name ))
26302630
2631+ @mock .patch ("component_catalog.models.Package.get_purldb_entries" )
2632+ def test_package_model_update_from_purldb_multiple_entries (self , mock_get_purldb_entries ):
2633+ purldb_entry1 = {
2634+ "uuid" : "326aa7a8-4f28-406d-89f9-c1404916925b" ,
2635+ "purl" : "pkg:pypi/django@3.0" ,
2636+ "type" : "pypi" ,
2637+ "name" : "django" ,
2638+ "version" : "3.0" ,
2639+ "keywords" : ["Keyword1" , "Keyword2" ],
2640+ "filename" : "Django-3.0.tar.gz" ,
2641+ "download_url" : "https://files.pythonhosted.org/packages/38/Django-3.0.tar.gz" ,
2642+ }
2643+ purldb_entry2 = {
2644+ "uuid" : "e133e70b-8dd3-4cf1-9711-72b1f57523a0" ,
2645+ "purl" : "pkg:pypi/django@3.0" ,
2646+ "type" : "pypi" ,
2647+ "name" : "django" ,
2648+ "version" : "3.0" ,
2649+ "primary_language" : "Python" ,
2650+ "keywords" : ["Keyword1" , "Keyword2" ],
2651+ "download_url" : "https://another.url/Django-3.0.tar.gz" ,
2652+ }
2653+
2654+ mock_get_purldb_entries .return_value = [purldb_entry1 , purldb_entry2 ]
2655+ package1 = make_package (self .dataspace , package_url = "pkg:pypi/django@3.0" )
2656+ updated_fields = package1 .update_from_purldb (self .user )
2657+ expected = ["filename" , "keywords" , "primary_language" ]
2658+ self .assertEqual (expected , sorted (updated_fields ))
2659+ self .assertEqual ("Django-3.0.tar.gz" , package1 .filename )
2660+ self .assertEqual (["Keyword1" , "Keyword2" ], package1 .keywords )
2661+ self .assertEqual ("Python" , package1 .primary_language )
2662+
26312663 @mock .patch ("component_catalog.models.Package.get_purldb_entries" )
26322664 def test_package_model_update_from_purldb_duplicate_exception (self , mock_get_purldb_entries ):
26332665 package_url = "pkg:pypi/django@3.0"
0 commit comments