public void ShouldFilterAddedDirectoryOnSource()
        {
            MockProject sourceProject = new MockProject(@"c:\mockPath1\project1.csproj");
            MockProject targetProject = new MockProject();

            MockProjectItemsFilter mockProjectItemsFilter = new MockProjectItemsFilter {
                IsSynchronizableReturnValue = false
            };
            ProjectItemsSynchronizer syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, new MockLogger(), null, null, mockProjectItemsFilter);
            string directoryToAdd            = Path.Combine(@"c:\mockPath1", "MyFolder");

            syncher.DirectoryAddedToSource(directoryToAdd);

            Assert.IsFalse(targetProject.ProjectItems.AddFolderCalled);
            Assert.IsTrue(mockProjectItemsFilter.IsSynchronizableCalled);
        }
        public void ShouldFilterAddedFileOnSource()
        {
            string      fileToAdd     = Path.Combine(@"c:\mockPath1", @"ABC.xaml");
            MockProject sourceProject = new MockProject(@"c:\mockPath1\project1.csproj");

            sourceProject.ProjectItems.AddProjectItem(new MockProjectItem("ABC.xaml"));
            MockProject            targetProject          = new MockProject();
            MockProjectItemsFilter mockProjectItemsFilter = new MockProjectItemsFilter {
                IsSynchronizableReturnValue = false
            };
            ProjectItemsSynchronizer syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, new MockLogger(), null, null, mockProjectItemsFilter);

            Assert.IsFalse(mockProjectItemsFilter.IsSynchronizableCalled);

            syncher.FileAddedToSource(fileToAdd);

            Assert.IsFalse(targetProject.ProjectItems.AddFromFileCalled);
            Assert.IsTrue(mockProjectItemsFilter.IsSynchronizableCalled);
        }
        public void ShouldUseRelativePathWhenEvaluatingFilter()
        {
            MockProject            sourceProject = new MockProject(@"c:\mockPath1\project1.csproj");
            MockProject            targetProject = new MockProject();
            MockLogger             mockLogger    = new MockLogger();
            MockProjectItemsFilter mockFilter    = new MockProjectItemsFilter();
            MockProjectItem        sourceFolder  = new MockProjectItem("MyFolder")
            {
                Kind = Constants.vsProjectItemKindPhysicalFolder
            };

            sourceProject.ProjectItems.AddProjectItem(sourceFolder);
            sourceFolder.ProjectItems.AddProjectItem(new MockProjectItem("ABC.txt"));

            ProjectItemsSynchronizer syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, mockLogger, null, mockFilter);
            string fileToAdd = @"c:\mockPath1\MyFolder\ABC.txt";

            syncher.FileAddedToSource(fileToAdd);

            Assert.IsTrue(mockFilter.IsSynchronizableCalled);
            Assert.AreEqual(@"MyFolder\ABC.txt", mockFilter.IsSynchronizableArgument);
        }
        public void ShouldUseRelativePathWhenEvaluatingFilter()
        {
            var sourceProject = new MockProject(@"c:\mockPath1\project1.csproj");
            var targetProject = new MockProject();
            var mockLogger = new MockLogger();
            var mockFilter = new MockProjectItemsFilter();
            var sourceFolder = new MockProjectItem("MyFolder") { Kind = Constants.vsProjectItemKindPhysicalFolder };
            sourceProject.ProjectItems.AddProjectItem(sourceFolder);
            sourceFolder.ProjectItems.AddProjectItem(new MockProjectItem("ABC.txt"));

            var syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, mockLogger, null, mockFilter);
            string fileToAdd = @"c:\mockPath1\MyFolder\ABC.txt";

            syncher.FileAddedToSource(fileToAdd);

            Assert.IsTrue(mockFilter.IsSynchronizableCalled);
            Assert.AreEqual(@"MyFolder\ABC.txt", mockFilter.IsSynchronizableArgument);
        }
        public void ShouldFilterAddedFileOnSource()
        {
            string fileToAdd = Path.Combine(@"c:\mockPath1", @"ABC.xaml");
            var sourceProject = new MockProject(@"c:\mockPath1\project1.csproj");
            sourceProject.ProjectItems.AddProjectItem(new MockProjectItem("ABC.xaml"));
            var targetProject = new MockProject();
            var mockProjectItemsFilter = new MockProjectItemsFilter();
            mockProjectItemsFilter.IsSynchronizableReturnValue = false;
            var syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, new MockLogger(), null, null, mockProjectItemsFilter);
            Assert.IsFalse(mockProjectItemsFilter.IsSynchronizableCalled);

            syncher.FileAddedToSource(fileToAdd);

            Assert.IsFalse(targetProject.ProjectItems.AddFromFileCalled);
            Assert.IsTrue(mockProjectItemsFilter.IsSynchronizableCalled);
        }
        public void ShouldFilterAddedDirectoryOnSource()
        {
            var sourceProject = new MockProject(@"c:\mockPath1\project1.csproj");
            var targetProject = new MockProject();

            var mockProjectItemsFilter = new MockProjectItemsFilter();
            mockProjectItemsFilter.IsSynchronizableReturnValue = false;
            var syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, new MockLogger(), null, null, mockProjectItemsFilter);
            string directoryToAdd = Path.Combine(@"c:\mockPath1", "MyFolder");

            syncher.DirectoryAddedToSource(directoryToAdd);

            Assert.IsFalse(targetProject.ProjectItems.AddFolderCalled);
            Assert.IsTrue(mockProjectItemsFilter.IsSynchronizableCalled);
        }