private DuplicateProcessor DuplicateProcessorWithDefaultMocks( IDuplicateReaderFactory readerFactory = null, IFileModifier fileModifier = null, IDuplicateHandlerConfiguration config = null, IFileSystem fileSystem = null) { if (fileSystem == null) { FileSystem fs = new FileSystem(); fileSystem = Substitute.For <IFileSystem>(); fileSystem.Path.Returns(Substitute.For <PathBase>()); fileSystem.Path.GetDirectoryName(Arg.Any <string>()) .Returns(callInfo => fs.Path.GetDirectoryName(callInfo.Arg <string>())); fileSystem.Path.Combine(Arg.Any <string>(), Arg.Any <string>()) .Returns(callInfo => fs.Path.Combine(callInfo.ArgAt <string>(0), callInfo.ArgAt <string>(1))); } return(new DuplicateProcessor( readerFactory: readerFactory ?? Substitute.For <IDuplicateReaderFactory>(), config: config ?? Substitute.For <IDuplicateHandlerConfiguration>(), fileSystem: fileSystem, fileModifier: fileModifier ?? Substitute.For <IFileModifier>())); }
private XmlDuplicateReader XmlDuplicateReaderWithDefaultMocks( IDuplicateHandlerConfiguration config = null, IFileOperationsAbstraction fileOps = null) { return(new XmlDuplicateReader( config: config ?? Substitute.For <IDuplicateHandlerConfiguration>(), fileOps: fileOps ?? Substitute.For <IFileOperationsAbstraction>())); }
public DuplicateHandlerApp( IDuplicateHandlerConfiguration config, IDuplicateProcessor duplicateProcessor, IFileOperationsAbstraction fileOps) { _config = config; _duplicateProcessor = duplicateProcessor; _fileOps = fileOps; }
public DuplicateReaderFactory( IDuplicateHandlerConfiguration config, IEnumerable <IDuplicateReader> readers, IFileSystem fileSystem) { _config = config; _readers = readers; _fileSystem = fileSystem; }
public DuplicateProcessor( IDuplicateReaderFactory readerFactory, IFileModifier fileModifier, IDuplicateHandlerConfiguration config, IFileSystem fileSystem) { _readerFactory = readerFactory; _fileModifier = fileModifier; _config = config; _fileSystem = fileSystem; }
private static IDuplicateHandlerApp CreateApp(string[] args) { IServiceProvider serviceProvider = new ServiceCollection() .AddLogging(loggingBuilder => { loggingBuilder .AddConsole() .AddDebug(); }) .AddSingleton <IDuplicateHandlerConfiguration>(isp => { ILogger <Program> logger = isp.GetRequiredService <ILogger <Program> >(); DuplicateHandlerConfiguration config = AssertValidArguments(args, logger); return(config); }) .AddSingleton <IDuplicateHandlerApp, DuplicateHandlerApp>() .AddSingleton <IDuplicateReaderFactory, DuplicateReaderFactory>() .AddSingleton <IFileOperationsAbstraction, FileOperationsImplementation>() .AddSingleton <IDuplicateReader, XmlDuplicateReader>() .AddSingleton <IDuplicateReader, CsvDuplicateReader>() .AddSingleton <IFileSystem, FileSystem>() .AddSingleton <IDuplicateProcessor, DuplicateProcessor>() .AddSingleton <DryRunFileModifier>() .AddSingleton <FileModifier>() .AddSingleton <IFileModifier>(isp => { IDuplicateHandlerConfiguration config = isp.GetRequiredService <IDuplicateHandlerConfiguration>(); if (config.DryRun) { return(isp.GetRequiredService <DryRunFileModifier>()); } else { return(isp.GetRequiredService <FileModifier>()); } }) .BuildServiceProvider(); return(serviceProvider.GetRequiredService <IDuplicateHandlerApp>()); }
public void StagedFilesReplaceCheckedGoodFile() { // Arrange IDuplicateHandlerConfiguration config = Substitute.For <IDuplicateHandlerConfiguration>(); config.GoodPath.Returns(@"c:\good"); GroupFile goodFile = new GroupFile() { FullName = config.GoodPath + @"\decent.jpg", Checked = true }; GroupFile stagedFile1 = new GroupFile() { FullName = @"c:\staged\better.png", Checked = false }; GroupFile stagedFile2 = new GroupFile() { FullName = @"c:\staged\better_v2.png", Checked = false }; IDuplicateReaderFactory readerFactory = this.ArrangeReaderFactoryForGroups( this.ArrangeGroup(goodFile, stagedFile1, stagedFile2)); IFileModifier fileModifier = Substitute.For <IFileModifier>(); DuplicateProcessor uut = this.DuplicateProcessorWithDefaultMocks( config: config, fileModifier: fileModifier, readerFactory: readerFactory); // Act uut.ProcessDuplicates(); // Assert fileModifier.Received(1).Delete(goodFile); fileModifier.Received(1).Move(stagedFile1, config.GoodPath); fileModifier.Received(1).Move(stagedFile2, config.GoodPath); }
public void StagedFileIsNotMovedIfMultipleGoodPathsFound() { // Arrange IDuplicateHandlerConfiguration config = Substitute.For <IDuplicateHandlerConfiguration>(); config.GoodPath.Returns(@"c:\good"); GroupFile goodFile1 = new GroupFile() { FullName = config.GoodPath + @"\folder1\decent.jpg", Checked = true }; GroupFile goodFile2 = new GroupFile() { FullName = config.GoodPath + @"\folder2\ok.jpg", Checked = true }; GroupFile stagedFile = new GroupFile() { FullName = @"c:\staged\better.png", Checked = false }; IDuplicateReaderFactory readerFactory = this.ArrangeReaderFactoryForGroups( this.ArrangeGroup(goodFile1, goodFile2, stagedFile)); IFileModifier fileModifier = Substitute.For <IFileModifier>(); DuplicateProcessor uut = this.DuplicateProcessorWithDefaultMocks( config: config, readerFactory: readerFactory, fileModifier: fileModifier); // Act uut.ProcessDuplicates(); // Assert fileModifier.Received(1).Delete(goodFile1); fileModifier.Received(1).Delete(goodFile2); fileModifier.DidNotReceive().Move(Arg.Any <GroupFile>(), Arg.Any <string>()); }
public XmlDuplicateReader(IDuplicateHandlerConfiguration config, IFileOperationsAbstraction fileOps) { _fileOps = fileOps; _config = config; }
public CsvDuplicateReader(IDuplicateHandlerConfiguration config, IFileSystem fileSystem) { _config = config; _fileSystem = fileSystem; }