public void ShouldAddProjectToPathThenFillCopyForEachReferencedProjects()
        {
            //GIVEN
            var projects   = new ReferencedProjects(Any.Array <ProjectId>(), Any.Instance <INScanSupport>());
            var reference1 = Substitute.For <IReferencedProject>();
            var reference2 = Substitute.For <IReferencedProject>();
            var reference3 = Substitute.For <IReferencedProject>();
            var dependencyPathInProgress = Substitute.For <IDependencyPathInProgress>();
            var clonedPathInProgress1    = Any.Instance <IDependencyPathInProgress>();
            var clonedPathInProgress2    = Any.Instance <IDependencyPathInProgress>();
            var clonedPathInProgress3    = Any.Instance <IDependencyPathInProgress>();
            var project = Any.Instance <IDependencyPathBasedRuleTarget>();


            projects.Add(Any.ProjectId(), reference1);
            projects.Add(Any.ProjectId(), reference2);
            projects.Add(Any.ProjectId(), reference3);

            dependencyPathInProgress.CloneWith(project).Returns(
                clonedPathInProgress1,
                clonedPathInProgress2,
                clonedPathInProgress3);

            //WHEN
            projects.FillAllBranchesOf(dependencyPathInProgress, project);

            //THEN
            reference1.Received(1).FillAllBranchesOf(clonedPathInProgress1);
            reference2.Received(1).FillAllBranchesOf(clonedPathInProgress2);
            reference3.Received(1).FillAllBranchesOf(clonedPathInProgress3);
        }
        public void ShouldFinalizeDependencyPathWithProjectWhenTheReferencesAreEmpty()
        {
            //GIVEN
            var projects = new ReferencedProjects(Any.Array <ProjectId>(), Any.Instance <INScanSupport>());
            var dependencyPathInProgress = Substitute.For <IDependencyPathInProgress>();
            var project = Any.Instance <IDependencyPathBasedRuleTarget>();

            //WHEN
            projects.FillAllBranchesOf(dependencyPathInProgress, project);

            //THEN
            dependencyPathInProgress.Received(1).FinalizeWith(project);
        }