public void BindingWorkflow_InitializeSolutionBinding_Update_NotAllUpToDate_SomeProjectsUpdated()
        {
            // Arrange
            var allProjects = new Project[]
            {
                new ProjectMock("csA.csproj"),
                new ProjectMock("csB.csproj"),
                new ProjectMock("csC.csproj"),
                new ProjectMock("csD.csproj")
            };

            var unboundProjects = new Project[]
            {
                new ProjectMock("XXX.csproj"),
                allProjects[1],
                allProjects[3]
            };

            var logger = new TestLogger();
            var bindingInfoProvider = new ConfigurableSolutionBindingInformationProvider();

            bindingInfoProvider.UnboundProjects = unboundProjects;

            // Act
            var result = BindingWorkflow.GetProjectsForRulesetBinding(false, allProjects, bindingInfoProvider, logger);

            // Assert
            result.Should().BeEquivalentTo(allProjects[1], allProjects[3]);
            logger.AssertOutputStringExists(Strings.Bind_Ruleset_SomeProjectsDoNotNeedToBeUpdated);
            logger.AssertPartialOutputStringExists("csA.csproj", "csC.csproj");
        }
        public void BindingWorkflow_GetProjectsForRulesetBinding_NoProjectsUpToDate()
        {
            // Arrange
            var allProjects = new Project[]
            {
                new ProjectMock("cs1.csproj"),
                new ProjectMock("cs2.csproj"),
                new ProjectMock("cs3.csproj")
            };

            var logger = new TestLogger();
            var bindingInfoProvider = new ConfigurableSolutionBindingInformationProvider();

            bindingInfoProvider.UnboundProjects = allProjects;

            // Act
            var result = BindingWorkflow.GetProjectsForRulesetBinding(false, allProjects, bindingInfoProvider, logger);

            // Assert
            result.Should().BeEquivalentTo(allProjects);
            logger.AssertOutputStringExists(Strings.Bind_Ruleset_AllProjectsNeedToBeUpdated);
        }