public void CalculateFileModificationsReturnsEmptyListOnEmptyInput()
        {
            var mc = new Mock <IModificationClassificator>();

            mc.Setup(m => m.Classify(It.IsAny <InfoPair>())).Returns(new PerFileModification());
            var fmc   = new FileModificationsListCreator(mc.Object);
            var input = new List <InfoPair>();

            var result = fmc.CalculateFileModifications(input);

            Assert.IsInstanceOfType(result, typeof(List <PerFileModification>));
            Assert.IsTrue(result.Count == 0);
        }
        public void CalculateFileModificationsProcessesEveryItemTest()
        {
            var mc = new Mock <IModificationClassificator>();

            mc.Setup(m => m.Classify(It.IsAny <InfoPair>())).Returns(new PerFileModification());
            var fmc   = new FileModificationsListCreator(mc.Object);
            var input = new List <InfoPair>()
            {
                new InfoPair(), new InfoPair()
            };

            var result = fmc.CalculateFileModifications(input);

            Assert.IsInstanceOfType(result, typeof(List <PerFileModification>));
            Assert.IsTrue(result.Count == 2);
        }
예제 #3
0
        public OutputReport Run(string path)
        {
            OutputReport report;

            try
            {
                var logFileNameProvider           = new DefaultLogFileNameProvider();
                var logFileRemover                = new LogFileItemRemover(logFileNameProvider);
                var currentFileInfo               = new FileInfoCollector(_fsl).CollectFileInfos(path);
                var currentFileInfoWithoutLogFile = logFileRemover.Remove(currentFileInfo);
                try
                {
                    var fileInfoFromLog = new LogInfoGatherer(_fsl, logFileNameProvider).GetFileInfoLogFromPath(path);
                    var fileInfoFromLogWithouLogFile = logFileRemover.Remove(fileInfoFromLog);
                    var pairedFileInfos =
                        new InfoPairer(new PairCreator(new FilenamePicker()), new CompareFileInfoOnPath()).Pair(
                            currentFileInfoWithoutLogFile, fileInfoFromLogWithouLogFile);
                    var fileModificationsList =
                        new FileModificationsListCreator(new ModificationClassificator()).CalculateFileModifications(
                            pairedFileInfos);
                    var fileModificationsListWithoutUnmodified = new UnmodifiedRemover().AlterList(fileModificationsList);
                    report = new FileModificationsReport(fileModificationsListWithoutUnmodified,
                                                         new ModificationItemToStringConverterUsingToString(), new HtmlLineBreaker());
                }
                catch (LfgLogFileDoesntExistException)
                {
                    report = new NewDirectoryReport();
                }
                new LogFileWriter(_fsl, new LogFileLinesFileInfoConverter(new LogLinesToFileInfoConverter()),
                                  logFileNameProvider).WriteLog(currentFileInfoWithoutLogFile, path);
            }
            catch (Exception ex) when(ex is FilesystemLayerException)
            {
                report = new ErrorMessageReport(ex.Message);
            }
            return(report);
        }