4242from dje .utils import merge_common_non_empty_values
4343from dje .utils import merge_relations
4444from dje .utils import normalize_newlines_as_CR_plus_LF
45+ from dje .utils import plain_purls_equal
4546from dje .utils import remove_field_from_query_dict
4647from dje .utils import str_to_id_list
4748from dje .views import get_previous_next
@@ -528,6 +529,7 @@ def test_utils_is_purl_fragment(self):
528529 self .assertFalse (is_purl_fragment (fragment ), msg = fragment )
529530
530531 def test_utils_get_plain_purl (self ):
532+ self .assertEqual ("" , get_plain_purl (None ))
531533 self .assertEqual ("" , get_plain_purl ("" ))
532534 self .assertEqual ("not:a/purl" , get_plain_purl ("not:a/purl" ))
533535 self .assertEqual ("not:a/purl" , get_plain_purl ("not:a/purl" ))
@@ -536,6 +538,23 @@ def test_utils_get_plain_purl(self):
536538 "pkg:npm/is-npm@1.0.0" , get_plain_purl ("pkg:npm/is-npm@1.0.0?qualifier=1#frament" )
537539 )
538540
541+ def test_utils_plain_purls_equal (self ):
542+ purl1 = "pkg:npm/is-npm@1.0.0"
543+ purl2 = "pkg:npm/is-npm@1.0.0"
544+ self .assertTrue (plain_purls_equal (purl1 , purl2 ))
545+
546+ purl1 = "pkg:npm/is-npm@1.0.0?qual=1#subpath"
547+ purl2 = "pkg:npm/is-npm@1.0.0"
548+ self .assertTrue (plain_purls_equal (purl1 , purl2 ))
549+
550+ purl1 = "pkg:npm/is-npm@1.0.0?qual=1"
551+ purl2 = "pkg:npm/is-npm@1.0.0?qual=2"
552+ self .assertTrue (plain_purls_equal (purl1 , purl2 ))
553+
554+ purl1 = "pkg:npm/is-npm@1.0.0"
555+ purl2 = "pkg:npm/is-npm@2.0.0"
556+ self .assertFalse (plain_purls_equal (purl1 , purl2 ))
557+
539558 def test_utils_localized_datetime (self ):
540559 self .assertIsNone (localized_datetime (None ))
541560
0 commit comments