@@ -504,3 +504,71 @@ def test_freeze__interactive_exception():
504504 task .freeze (step )
505505
506506 assert "cannot be frozen" in str (e )
507+
508+
509+ def test_is_dependency_already_installed_unmanaged ():
510+ """Test that unmanaged dependencies return False"""
511+ task = create_task (UpdateDependencies , {"dependencies" : []})
512+ dependency = UnmanagedGitHubRefDependency .parse_obj ({
513+ "github" : "https://github.com/Test/TestRepo" ,
514+ "ref" : "main" ,
515+ "subfolder" : "src"
516+ })
517+
518+ assert task ._is_dependency_already_installed (dependency ) is False
519+
520+
521+ def test_is_dependency_already_installed_error_handling ():
522+ """Test error handling when installed packages can't be retrieved"""
523+ task = create_task (UpdateDependencies , {"dependencies" : []})
524+ task .org_config = mock .Mock ()
525+ # Mock the property to raise an exception
526+ type(task .org_config ).installed_packages = mock .PropertyMock (side_effect = Exception )
527+ dependency = PackageVersionIdDependency (version_id = "04t000000000000" )
528+
529+ assert task ._is_dependency_already_installed (dependency ) is False
530+
531+
532+ def test_is_dependency_already_installed_version_id ():
533+ """Test package version ID dependency checks"""
534+ task = create_task (UpdateDependencies , {"dependencies" : []})
535+ task .org_config = mock .Mock ()
536+
537+ # Test with 18 character ID
538+ task .org_config .installed_packages = {"ns" : [mock .Mock (id = "04t000000000000AAA" )]}
539+ dependency = PackageVersionIdDependency (version_id = "04t000000000000AAA" )
540+ assert task ._is_dependency_already_installed (dependency ) is True
541+
542+ # Test with 15 character ID
543+ task .org_config .installed_packages = {"ns" : [mock .Mock (id = "04t000000000000" )]}
544+ dependency = PackageVersionIdDependency (version_id = "04t000000000000AAA" )
545+ assert task ._is_dependency_already_installed (dependency ) is True
546+
547+
548+ def test_is_dependency_already_installed_namespace_version ():
549+ """Test namespace version dependency checks"""
550+ task = create_task (UpdateDependencies , {"dependencies" : []})
551+ task .org_config = mock .Mock ()
552+
553+ # Test with version_id
554+ task .org_config .installed_packages = {"ns" : [mock .Mock (id = "04t000000000000AAA" )]}
555+ dependency = PackageNamespaceVersionDependency (
556+ namespace = "ns" ,
557+ version = "1.0" ,
558+ version_id = "04t000000000000AAA"
559+ )
560+ assert task ._is_dependency_already_installed (dependency ) is True
561+
562+ # Test with regular version
563+ mock_version = mock .Mock ()
564+ mock_version .id = "04t000000000000AAA"
565+ task .org_config .installed_packages = {"ns@1.0" : [mock_version ]}
566+ dependency = PackageNamespaceVersionDependency (namespace = "ns" , version = "1.0" )
567+ assert task ._is_dependency_already_installed (dependency ) is True
568+
569+ # Test with beta version
570+ mock_version = mock .Mock ()
571+ mock_version .id = "04t000000000000BBB"
572+ task .org_config .installed_packages = {"ns@1.0b2" : [mock_version ]}
573+ dependency = PackageNamespaceVersionDependency (namespace = "ns" , version = "1.0 (Beta 2)" )
574+ assert task ._is_dependency_already_installed (dependency ) is True
0 commit comments