Exemple #1
0
        public void FilterIgnoresNonExistingPaths()
        {
            var storage   = new Mock <IMetaDataStorage>();
            var fsFactory = new Mock <IFileSystemInfoFactory>();
            var filter    = new IgnoreAlreadyHandledFsEventsFilter(storage.Object, fsFactory.Object);
            var fsEvent   = new FSEvent(WatcherChangeTypes.Created, Path.Combine(Path.GetTempPath(), "path"), true);

            Assert.That(filter.Handle(fsEvent), Is.False);
        }
Exemple #2
0
        public void FilterDeleteFsEventsIfNoCorrespondingElementExistsInStorage()
        {
            string path    = "path";
            var    filter  = new IgnoreAlreadyHandledFsEventsFilter(Mock.Of <IMetaDataStorage>(), Mock.Of <IFileSystemInfoFactory>());
            var    fsEvent = new Mock <IFSEvent>();

            fsEvent.Setup(e => e.LocalPath).Returns(path);
            fsEvent.Setup(e => e.Type).Returns(WatcherChangeTypes.Deleted);
            fsEvent.Setup(e => e.IsDirectory).Returns(false);

            Assert.That(filter.Handle(fsEvent.Object), Is.True);
        }
Exemple #3
0
        public void FilterHandlesAlreadyExistingFolderEntries()
        {
            string path      = "path";
            var    storage   = new Mock <IMetaDataStorage>();
            var    fsFactory = new Mock <IFileSystemInfoFactory>();
            var    filter    = new IgnoreAlreadyHandledFsEventsFilter(storage.Object, fsFactory.Object);
            var    fsEvent   = new Mock <IFSEvent>();

            fsEvent.Setup(e => e.IsDirectory).Returns(true);
            fsEvent.Setup(e => e.LocalPath).Returns(path);
            fsEvent.Setup(e => e.Type).Returns(WatcherChangeTypes.Created);
            fsFactory.AddDirectory(path);
            storage.Setup(s => s.GetObjectByLocalPath(It.Is <IFileSystemInfo>(p => p.FullName.Equals(path)))).Returns(Mock.Of <IMappedObject>());

            Assert.That(filter.Handle(fsEvent.Object), Is.True);
        }
Exemple #4
0
        public void FilterDeletesFsEventsIfLocalFileSystemContainsTheElementOfTheStorage()
        {
            string path      = "path";
            Guid   guid      = Guid.NewGuid();
            var    storage   = new Mock <IMetaDataStorage>();
            var    fsFactory = new Mock <IFileSystemInfoFactory>();

            fsFactory.AddFile(path, guid, true);
            storage.AddLocalFile(path, "id", guid);
            var filter  = new IgnoreAlreadyHandledFsEventsFilter(storage.Object, fsFactory.Object);
            var fsEvent = Mock.Of <IFSEvent>(
                e =>
                e.LocalPath == path &&
                e.Type == WatcherChangeTypes.Deleted &&
                e.IsDirectory == false);

            Assert.That(filter.Handle(fsEvent), Is.True);
        }
Exemple #5
0
        public void FilterHandlesAlreadyMovedFolderEntries()
        {
            string path      = "path";
            string oldPath   = "oldpath";
            Guid   guid      = Guid.NewGuid();
            var    storage   = new Mock <IMetaDataStorage>();
            var    fsFactory = new Mock <IFileSystemInfoFactory>(MockBehavior.Strict);
            var    moveEvent = Mock.Of <IFSMovedEvent>(e => e.LocalPath == path && e.OldPath == oldPath && e.Type == WatcherChangeTypes.Renamed && e.IsDirectory == true);
            var    dirInfo   = Mock.Of <IDirectoryInfo>(d => d.FullName == path && d.Exists == true && d.Uuid == guid);

            fsFactory.AddIDirectoryInfo(dirInfo);
            storage.AddMappedFolder(new MappedObject("path", "remoteId", MappedObjectType.Folder, null, null)
            {
                Guid = guid
            }, path);
            var filter = new IgnoreAlreadyHandledFsEventsFilter(storage.Object, fsFactory.Object);

            Assert.That(filter.Handle(moveEvent), Is.True);
        }
Exemple #6
0
        public void FilterIgnoresNonFsEvents()
        {
            var filter = new IgnoreAlreadyHandledFsEventsFilter(Mock.Of <IMetaDataStorage>(), Mock.Of <IFileSystemInfoFactory>());

            Assert.That(filter.Handle(Mock.Of <ISyncEvent>()), Is.False);
        }