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); }
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); }
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)); }
private static string GetContent(FileSystemEntryChange fileChange, bool isDirectory) { if (isDirectory || fileChange.ChangeType != FileSystemEntryChangeType.Changed) { return(null); } var content = FileHelper .GetFileContent(fileChange.Path); return(content); }
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(); } }
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); }
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); }
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); }
public FileSystemEntryChangedEvent(FileSystemEntryChange change) { Change = change; }
public Task Execute(FileSystemEntryChange input) { return(_logStep.Execute(input)); }