public void ChangedEvent_WithFileRenamed_ShouldSendFileToChannel()
        {
            //Arrange
            const string directory     = "C:\\MyFolder";
            var          configuration = new Mock <IConfiguration>();

            configuration.Setup(config => config["directory-path"]).Returns(directory);
            var channel = new Mock <IChannel>();

            var(fileSystem, fileSystemWatcher) = GenerateFileSystemMock(directory, false);

            // Act
            var directoryMonitor = new DirectoryMonitor(configuration.Object, channel.Object, fileSystem.Object);

            directoryMonitor.StartMonitoring();
            fileSystemWatcher.Raise(watcher => watcher.Renamed += null, new RenamedEventArgs(WatcherChangeTypes.Renamed, directory, "b.txt", "a.txt"));

            // Assert
            channel.Verify(chan => chan.AddFile(It.Is <RenameFileModel>(model =>
                                                                        model.RelativePath == "a.txt" &&
                                                                        model.NewFileName == "b.txt" &&
                                                                        model.FileAction == FileAction.Rename)), Times.Once);

            channel.VerifyNoOtherCalls();
        }
Exemple #2
0
        public MainWindow()
        {
            this.InitializeComponent();

            ApplyFormDimensions();
            PopulateTasksToExecute();

            DirMonitor = new DirectoryMonitor(
                ConfigManager.Instance.SettingsConfigurator.ConfigDataDirectory,
                FileSystemWatcher_Changed,
                FileSystemWatcher_Created,
                FileSystemWatcher_Renamed,
                FileSystemWatcher_Deleted);

            DirMonitor.StartMonitoring();
        }
        public void StartMonitoring_WithNonEmptyDirectory_ShouldSendAllFilesToChannel()
        {
            //Arrange
            const string directory     = "C:\\MyFolder";
            var          configuration = new Mock <IConfiguration>();

            configuration.Setup(config => config["directory-path"]).Returns(directory);
            var channel = new Mock <IChannel>();

            var(fileSystem, fileSystemWatcher) = GenerateFileSystemMock(directory, true);

            // Act
            var directoryMonitor = new DirectoryMonitor(configuration.Object, channel.Object, fileSystem.Object);

            directoryMonitor.StartMonitoring();

            //Assert
            fileSystemWatcher.VerifySet(watcher => watcher.EnableRaisingEvents = true);

            channel.Verify(chan => chan.AddFile(It.Is <FileModel>(model =>
                                                                  model.FullPath == "C:\\MyFolder\\a" &&
                                                                  model.RelativePath == "a" &&
                                                                  model.FileAction == FileAction.Create)), Times.Once);

            channel.Verify(chan => chan.AddFile(It.Is <FileModel>(model =>
                                                                  model.FullPath == "C:\\MyFolder\\b" &&
                                                                  model.RelativePath == "b" &&
                                                                  model.FileAction == FileAction.Create)), Times.Once);

            channel.Verify(chan => chan.AddFile(It.Is <FileModel>(model =>
                                                                  model.FullPath == "C:\\MyFolder\\a\\1.txt" &&
                                                                  model.RelativePath == "a\\1.txt" &&
                                                                  model.FileAction == FileAction.Change)), Times.Once);

            channel.Verify(chan => chan.AddFile(It.Is <FileModel>(model =>
                                                                  model.FullPath == "C:\\MyFolder\\2.mov" &&
                                                                  model.RelativePath == "2.mov" &&
                                                                  model.FileAction == FileAction.Change)), Times.Once);

            channel.VerifyNoOtherCalls();
        }