Beispiel #1
0
        public void ShouldResolveReferencesOfAllProjectUsingItselfAsAContext()
        {
            //GIVEN
            var project1     = Substitute.For <IDotNetProject>();
            var project2     = Substitute.For <IDotNetProject>();
            var project3     = Substitute.For <IDotNetProject>();
            var projectsById = new Dictionary <ProjectId, IDotNetProject>
            {
                { Any.ProjectId(), project1 },
                { Any.ProjectId(), project2 },
                { Any.ProjectId(), project3 },
            };
            var dotNetStandardSolution = new SolutionForDependencyPathRules(
                Any.Instance <IPathCache>(), projectsById);


            //WHEN
            dotNetStandardSolution.ResolveAllProjectsReferences();

            //THEN
            Received.InOrder(() =>
            {
                project1.ResolveReferencesFrom((ISolutionContext)dotNetStandardSolution);
                project2.ResolveReferencesFrom((ISolutionContext)dotNetStandardSolution);
                project3.ResolveReferencesFrom((ISolutionContext)dotNetStandardSolution);
            });
        }
Beispiel #2
0
        public void ShouldBuildPathsCacheWhenAskedToBuildCache()
        {
            //GIVEN
            var root1        = Substitute.For <IDotNetProject>();
            var root2        = Substitute.For <IDotNetProject>();
            var nonRoot      = Substitute.For <IDotNetProject>();
            var projectsById = new Dictionary <ProjectId, IDotNetProject>
            {
                { Any.ProjectId(), root1 },
                { Any.ProjectId(), nonRoot },
                { Any.ProjectId(), root2 }
            } as IReadOnlyDictionary <ProjectId, IDotNetProject>;
            var pathCache = Substitute.For <IPathCache>();
            var solution  = new SolutionForDependencyPathRules(pathCache,
                                                               projectsById);

            root1.IsRoot().Returns(true);
            root2.IsRoot().Returns(true);
            nonRoot.IsRoot().Returns(false);

            //WHEN
            solution.BuildDependencyPathCache();

            //THEN
            pathCache.Received(1).BuildStartingFrom(ArrayConsistingOf(root1, root2));
        }
Beispiel #3
0
        public void ShouldOrderThePathRuleSetToCheckThePathsInTheCacheForVerification()
        {
            //GIVEN
            var projectsById = Any.ReadOnlyDictionary <ProjectId, IDotNetProject>();
            var pathCache    = Any.Instance <IPathCache>();
            var solution     = new SolutionForDependencyPathRules(
                pathCache,
                projectsById);
            var ruleSet = Substitute.For <IPathRuleSet>();
            var report  = Any.Instance <IAnalysisReportInProgress>();

            //WHEN
            solution.Check(ruleSet, report);

            //THEN
            ruleSet.Received(1).Check(pathCache, report);
        }
Beispiel #4
0
        public void ShouldThrowExceptionWhenResolvingReferenceToProjectWhichIsNotLoadedCorrectlyToSolution()
        {
            //GIVEN
            var project1     = Substitute.For <IDotNetProject>();
            var project1Id   = Any.ProjectId();
            var projectsById = new Dictionary <ProjectId, IDotNetProject>
            {
                { project1Id, project1 },
            };
            var dotNetStandardSolution = new SolutionForDependencyPathRules(
                Any.Instance <IPathCache>(), projectsById);


            //WHEN - THEN
            new Action(() => dotNetStandardSolution.ResolveReferenceFrom(project1, Any.ProjectIdOtherThan(project1Id)))
            .Should().ThrowExactly <ReferencedProjectNotFoundInSolutionException>();
            project1.ReceivedNothing();
        }
Beispiel #5
0
        public void ShouldAddTwoWayBindingBetweenReferencedAndReferencingProjectDuringResolutionFromSolution()
        {
            //GIVEN
            var project1     = Substitute.For <IDotNetProject>();
            var project2     = Substitute.For <IDotNetProject>();
            var project2Id   = Any.ProjectId();
            var projectsById = new Dictionary <ProjectId, IDotNetProject>
            {
                { Any.ProjectId(), project1 },
                { project2Id, project2 },
            };
            var dotNetStandardSolution = new SolutionForDependencyPathRules(
                Any.Instance <IPathCache>(), projectsById);


            //WHEN
            dotNetStandardSolution.ResolveReferenceFrom(project1, project2Id);

            //THEN
            project1.Received(1).ResolveAsReferencing(project2);
            project2.Received(1).ResolveAsReferenceOf(project1);
        }