Exemplo n.º 1
0
        public void TestDoNotMergeUniqueChanges()
        {
            var createChange = new FileSystemEntryChange(FileSystemEntryChangeType.Created, "1", "1");
            var updateChange = new FileSystemEntryChange(FileSystemEntryChangeType.Changed, "2", "2");
            var deleteChange = new FileSystemEntryChange(FileSystemEntryChangeType.Deleted, "3", "3");


            var changes = new List <FileSystemEntryChange>
            {
                createChange,
                updateChange,
                deleteChange
            };

            // Act
            var result = FileSystemEntryChangeHelper.Merge(changes);

            // Assert
            // Contiene cambio Creado
            Assert.Contains(createChange, result);

            // Contiene cambio Actualizado
            Assert.Contains(updateChange, result);

            // Contiene cambio Eliminado
            Assert.Contains(deleteChange, result);
        }
Exemplo n.º 2
0
        public void TestDoesNotMergeChangedRenamedAndDeletedChanges()
        {
            var changedChange = new FileSystemEntryChange(FileSystemEntryChangeType.Changed, "1", "1");
            var renamedChange = new FileSystemEntryChange(FileSystemEntryChangeType.Renamed, "1", "1", "1");
            var deletedChange = new FileSystemEntryChange(FileSystemEntryChangeType.Deleted, "1", "1");

            var changes = new List <FileSystemEntryChange>()
            {
                changedChange,
                renamedChange,
                deletedChange
            };

            // Act
            var result = FileSystemEntryChangeHelper.Merge(changes);

            // Assert
            // Contiene cambio Actualizado
            Assert.Contains(changedChange, result);

            // Contiene cambio Renombrado
            Assert.Contains(renamedChange, result);

            // Contiene cambio Eliminado
            Assert.Contains(deletedChange, result);
        }
Exemplo n.º 3
0
        public void TestMergeDuplicateChanges()
        {
            var createChange      = new FileSystemEntryChange(FileSystemEntryChangeType.Created, "1", "1");
            var createChangeClone = new FileSystemEntryChange(FileSystemEntryChangeType.Created, "1", "1");

            var deleteChange      = new FileSystemEntryChange(FileSystemEntryChangeType.Deleted, "2", "2");
            var deleteChangeClone = new FileSystemEntryChange(FileSystemEntryChangeType.Deleted, "2", "2");


            var changes = new List <FileSystemEntryChange>
            {
                createChange,
                createChangeClone,
                deleteChange,
                deleteChangeClone
            };

            // Act
            var result = FileSystemEntryChangeHelper.Merge(changes);

            // Assert
            // Contiene un solo cambio Creado
            Assert.Single(result, x => x.Path == createChange.Path &&
                          x.ChangeType == FileSystemEntryChangeType.Created);

            // Contiene un solo cambio Eliminado
            Assert.Single(result, x => x.Path == deleteChange.Path &&
                          x.ChangeType == FileSystemEntryChangeType.Deleted);
        }
        public Task Execute(FileSystemEntryChange change)
        {
            _logger.LogDebug("{Change} {Path} {OldPath}",
                             change.ChangeType.ToEsName(), change.Path, change.OldPath);

            return(_batchChangesStep.Execute(change));
        }
Exemplo n.º 5
0
        private static string GetContent(FileSystemEntryChange fileChange, bool isDirectory)
        {
            if (isDirectory || fileChange.ChangeType != FileSystemEntryChangeType.Changed)
            {
                return(null);
            }

            var content = FileHelper
                          .GetFileContent(fileChange.Path);

            return(content);
        }
Exemplo n.º 6
0
        public static AppFileEntryChange MapToAppFileEntryChange(FileSystemEntryChange fileChange, int id, int parentId)
        {
            var isDirectory = PathHelper
                              .IsDirectoryPath(fileChange.Path);

            var appFileEntry = new AppFileEntry(id, parentId,
                                                fileChange.Name, isDirectory);

            var appFileChangeType = MapToAppFileEntryChangeType(fileChange.ChangeType);

            var content = GetContent(fileChange, isDirectory);

            var appFileChange = new AppFileEntryChange(appFileEntry,
                                                       appFileChangeType, content);

            return(appFileChange);
        }
        public async Task Execute(FileSystemEntryChange change)
        {
            if (!_pathFilter.IsValid(change.Path))
            {
                return;
            }

            await _semaphore.WaitAsync();

            try
            {
                _buffer.Add(change);
            }
            finally
            {
                _semaphore.Release();
            }
        }
Exemplo n.º 8
0
        private AppFileEntryChange ConvertToAppFileChange(FileSystemEntryChange change)
        {
            var path = change.ChangeType == FileSystemEntryChangeType.Renamed
                ? change.OldPath
                : change.Path;

            var id = _logicPathRepository.Add(path);

            if (change.ChangeType == FileSystemEntryChangeType.Renamed)
            {
                _logicPathRepository.Update(id, change.Path);
            }

            var parentId = GetParentId(path);

            var appFileChange = FileEntryChangeMapper
                                .MapToAppFileEntryChange(change, id, parentId);

            return(appFileChange);
        }
Exemplo n.º 9
0
        public void TestMergeCreatedAndDeletedChanges()
        {
            var createChange = new FileSystemEntryChange(FileSystemEntryChangeType.Created, "1", "1");
            var deleteChange = new FileSystemEntryChange(FileSystemEntryChangeType.Deleted, "1", "1");

            var changes = new List <FileSystemEntryChange>
            {
                createChange,
                deleteChange
            };

            // Act
            var result = FileSystemEntryChangeHelper.Merge(changes);

            // Assert
            // Contiene cambio Eliminado
            Assert.Contains(deleteChange, result);

            // No contiene cambio Creado
            Assert.DoesNotContain(createChange, result);
        }
Exemplo n.º 10
0
        protected override Task Given()
        {
            var mockPublishChangesStep = new Mock <IFileChangePipelinePublishChangesStep>();

            mockPublishChangesStep.Setup(h => h.Execute(It.IsAny <List <AppFileEntryChange> >()))
            .Callback <List <AppFileEntryChange> >(r => _result = r.FirstOrDefault());

            _logicPathRepository = GetService <ILogicPathRepository>();

            _step = new FileChangePipelineTransformChangeToLogicStep(_logicPathRepository,
                                                                     mockPublishChangesStep.Object);

            var path = GetResourcesPath("FileChangePipelineConvertChangeToLogicStepTests", "demo.txt");

            _fileSystemEntryChange  = new FileSystemEntryChange(FileSystemEntryChangeType.Changed, "demo.txt", path);
            _fileSystemEntryChanges = new List <FileSystemEntryChange>
            {
                _fileSystemEntryChange
            };

            return(Task.CompletedTask);
        }
Exemplo n.º 11
0
 public FileSystemEntryChangedEvent(FileSystemEntryChange change)
 {
     Change = change;
 }
Exemplo n.º 12
0
 public Task Execute(FileSystemEntryChange input)
 {
     return(_logStep.Execute(input));
 }