Exemple #1
0
        public void FilterLocalFSRenamedEvents()
        {
            this.SetupMocks();
            var fileEvent = new FSMovedEvent(Path.Combine(this.ignoredPath, "old_file.txt"), Path.Combine(this.ignoredPath, "file.txt"), false);

            Assert.That(this.underTest.Handle(fileEvent), Is.True);
        }
Exemple #2
0
        public void DoNotTransformFSIgnoredFolderMovedEventToAddedEvent()
        {
            this.SetupMocks();
            string fileName = "folder";
            var    oldFile  = Path.Combine(this.ignoredLocalPath);
            var    newFile  = Path.Combine(Path.GetTempPath(), fileName);
            var    moveFile = new FSMovedEvent(oldFile, newFile, true);

            Assert.That(this.underTest.Handle(moveFile), Is.False);

            this.queue.VerifyThatNoEventIsAdded();
        }
Exemple #3
0
        public void TransformFSMovedEventToDeletedEvent()
        {
            this.SetupMocks();
            string fileName = "file.txt";
            var    oldFile  = Path.Combine(Path.GetTempPath(), fileName);
            var    newFile  = Path.Combine(this.ignoredLocalPath, fileName);
            var    moveFile = new FSMovedEvent(oldFile, newFile, false);

            Assert.That(this.underTest.Handle(moveFile), Is.True);

            this.queue.Verify(q => q.AddEvent(It.Is <FSEvent>(e => !e.IsDirectory && e.LocalPath == oldFile && e.Type == WatcherChangeTypes.Deleted)), Times.Once);
            this.queue.VerifyThatNoOtherEventIsAddedThan <FSEvent>();
        }
Exemple #4
0
        public void HandleFSFolderRenamedEvents()
        {
            string oldpath = Path.Combine(this.localFolder.FullName, Path.GetRandomFileName());

            this.queue.Setup(q => q.AddEvent(It.IsAny <AbstractFolderEvent>()))
            .Callback((ISyncEvent f) => this.returnedFolderEvent = f as AbstractFolderEvent);
            var watcher = new WatcherConsumer(this.queue.Object);

            var folderRenamedFSEvent = new FSMovedEvent(oldpath, this.localFolder.FullName, true);

            Assert.True(watcher.Handle(folderRenamedFSEvent));
            Assert.AreEqual(MetaDataChangeType.MOVED, this.returnedFolderEvent.Local);
            Assert.AreEqual(this.localFolder.FullName, (this.returnedFolderEvent as FolderEvent).LocalFolder.FullName);
            Assert.AreEqual(oldpath, (this.returnedFolderEvent as FolderMovedEvent).OldLocalFolder.FullName);
            Assert.IsNull((this.returnedFolderEvent as FolderMovedEvent).RemoteFolder);
            Assert.IsNull((this.returnedFolderEvent as FolderMovedEvent).OldRemoteFolderPath);
            Assert.AreEqual(MetaDataChangeType.NONE, (this.returnedFolderEvent as FolderEvent).Remote);
        }
Exemple #5
0
        public void ReportFSFolderMovedEvent()
        {
            var anotherSubFolder = new DirectoryInfo(Path.Combine(this.localFolder.FullName, Path.GetRandomFileName()));

            anotherSubFolder.Create();
            string oldpath = this.localSubFolder.FullName;
            string newpath = Path.Combine(anotherSubFolder.FullName, Path.GetRandomFileName());

            this.queue.Setup(q => q.AddEvent(It.IsAny <FSMovedEvent>()))
            .Callback((ISyncEvent f) => this.returnedFSEvent = f as FSMovedEvent);
            var watcherData = this.GetWatcherData(this.localFolder.FullName, this.queue.Object);

            watcherData.Watcher.EnableEvents = true;
            var t = Task.Factory.StartNew(() => {
                int count = 0;
                while (this.returnedFSEvent == null && count < RETRIES)
                {
                    WaitWatcherData(watcherData, newpath, WatcherChangeTypes.Renamed, MILISECONDSWAIT);
                    count++;
                }
            });

            new DirectoryInfoWrapper(this.localSubFolder).MoveTo(newpath);
            t.Wait();
            if (this.returnedFSEvent != null)
            {
                FSMovedEvent movedEvent = this.returnedFSEvent as FSMovedEvent;

                Assert.That(movedEvent.OldPath, Is.EqualTo(oldpath));
                Assert.That(movedEvent.LocalPath, Is.EqualTo(newpath));
                Assert.That(movedEvent.Type, Is.EqualTo(WatcherChangeTypes.Renamed));
                Assert.That(movedEvent.IsDirectory, Is.True);
            }
            else
            {
                Assert.Inconclusive("Missed folder moved event(s)");
            }

            this.localSubFolder = new DirectoryInfo(newpath);
        }