public void MoveOutputFiles_MultipleFiles_FileAppendixIncrements() { var fileStub = MockRepository.GenerateStub <IFile>(); _th.GenerateGsJob(PSfiles.ThreePDFCreatorTestpages, OutputFormat.Png); var outputFileMover = new AutosaveOutputFileMover(new DirectoryWrap(), fileStub, _pathUtil); _th.Job.TempOutputFiles = _multipleTempOutputFiles; _th.Job.Profile.AutoSave.Enabled = true; var filenameTemplate = _th.Job.OutputFilenameTemplate; //Save it, because it can change in MoveOutputFiles outputFileMover.MoveOutputFiles(_th.Job); fileStub.AssertWasCalled(x => x.Copy("ignore", "ignore2", true), options => options.IgnoreArguments().Repeat.Times(3)); //Three times, once for each file fileStub.AssertWasCalled(x => x.Delete("ignore"), options => options.IgnoreArguments().Repeat.Times(3)); //Three times, once for each file Assert.AreEqual(3, _th.Job.OutputFiles.Count, "Wrong number of outputfiles."); var templateWithoutExtension = RemoveExtension(filenameTemplate); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[0], "First outputfile is not based on template from job."); StringAssert.EndsWith("1.png", _th.Job.OutputFiles[0], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[1], "Second outputfile is not based on template from job."); StringAssert.EndsWith("2.png", _th.Job.OutputFiles[1], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[2], "Third outputfile is not based on template from job."); StringAssert.EndsWith("3.png", _th.Job.OutputFiles[2], "Failure in file appendix."); }
public void MoveOutputFiles_SingleFile_FirstAttemptToCopyFailsSecondIsSuccessful_OutputfileMustHaveAppendix() { var fileStub = MockRepository.GenerateStub <IFile>(); fileStub.Stub(x => x.Copy(Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything)) .Throw(new IOException("IoException")) .Repeat.Once(); fileStub.Stub(x => x.Exists(Arg <string> .Is.Anything)).Return(true).Repeat.Once(); //Simulate existing file in first request for unique filename fileStub.Stub(x => x.Exists(Arg <string> .Is.Anything)).IgnoreArguments().Return(false); _th.GenerateGsJob(PSfiles.PDFCreatorTestpage, OutputFormat.Pdf); _th.Job.Profile.AutoSave.Enabled = true; var outputFileMover = new AutosaveOutputFileMover(new DirectoryWrap(), fileStub, _pathUtil); _th.Job.TempOutputFiles = _singleTempOutputfile; var filenameTemplate = _th.Job.OutputFilenameTemplate; //Save it, because it can change in MoveOutputFiles outputFileMover.MoveOutputFiles(_th.Job); fileStub.AssertWasCalled(x => x.Delete("ignore"), options => options.IgnoreArguments().Repeat.Once()); //Delete must only be called once var templateWithoutExtension = RemoveExtension(filenameTemplate); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[0], "Outputfile is not based on template from job."); StringAssert.EndsWith("_2.pdf", _th.Job.OutputFiles[0], "Failure in file appendix"); }
public void MoveOutputFiles_MultipleFiles_AutoSaveWithoutEnsureUniqueFilenames_FirstFileExists_OutputfileMustNotHaveAppendix() { var fileStub = MockRepository.GenerateStub <IFile>(); fileStub.Stub(x => x.Copy(Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything)) .Repeat.Once(); fileStub.Stub(x => x.Exists(Arg <string> .Is.Anything)).Return(true).Repeat.Once(); //Simulate existing file in first request for unique filename fileStub.Stub(x => x.Exists(Arg <string> .Is.Anything)).IgnoreArguments().Return(false); _th.GenerateGsJob(PSfiles.ThreePDFCreatorTestpages, OutputFormat.Pdf); var outputFileMover = new AutosaveOutputFileMover(new DirectoryWrap(), fileStub, _pathUtil); _th.Job.Profile.AutoSave.Enabled = true; _th.Job.Profile.AutoSave.EnsureUniqueFilenames = false; _th.Job.TempOutputFiles = _multipleTempOutputFiles; var filenameTemplate = _th.Job.OutputFilenameTemplate; //Save it, because it can change in MoveOutputFiles outputFileMover.MoveOutputFiles(_th.Job); fileStub.AssertWasCalled(x => x.Copy("ignore", "ignore2", true), options => options.IgnoreArguments().Repeat.Times(3)); //Three times, once for each file fileStub.AssertWasCalled(x => x.Delete("ignore"), options => options.IgnoreArguments().Repeat.Times(3)); //Three times, once for each file var templateWithoutExtension = RemoveExtension(filenameTemplate); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[0], "First outputfile is not based on template from job."); StringAssert.EndsWith("1.png", _th.Job.OutputFiles[0], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[1], "Second outputfile is not based on template from job."); StringAssert.EndsWith("2.png", _th.Job.OutputFiles[1], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[2], "Third outputfile is not based on template from job."); StringAssert.EndsWith("3.png", _th.Job.OutputFiles[2], "Failure in file appendix."); }
public ConversionWorkflowTestFactory(IProfileChecker profileChecker, ITargetFileNameComposer targetFileNameComposer, IJobRunner jobRunner, IJobDataUpdater jobDataUpdater, AutosaveOutputFileMover outputFileMover) { _profileChecker = profileChecker; _targetFileNameComposer = targetFileNameComposer; _jobRunner = jobRunner; _jobDataUpdater = jobDataUpdater; _outputFileMover = outputFileMover; }
public AutoSaveWorkflow(IJobDataUpdater jobDataUpdater, IJobRunner jobRunner, IProfileChecker profileChecker, ITargetFileNameComposer targetFileNameComposer, AutosaveOutputFileMover outputFileMover) { JobDataUpdater = jobDataUpdater; _jobRunner = jobRunner; _profileChecker = profileChecker; _targetFileNameComposer = targetFileNameComposer; _outputFileMover = outputFileMover; }
public void RunGsJob() { SetUpGhostscript(); InitMissingData(); var outputFileMover = new AutosaveOutputFileMover(new DirectoryWrap(), new FileWrap(), new PathUtil(new PathWrap(), new DirectoryWrap()), new DirectoryHelper(new DirectoryWrap())); _jobRunner.RunJob(Job, outputFileMover); }
public AutoSaveWorkflow(IJobDataUpdater jobDataUpdater, IJobRunner jobRunner, IProfileChecker profileChecker, ITargetFileNameComposer targetFileNameComposer, AutosaveOutputFileMover outputFileMover, INotificationService notificationService) { JobDataUpdater = jobDataUpdater; _jobRunner = jobRunner; _profileChecker = profileChecker; _targetFileNameComposer = targetFileNameComposer; _outputFileMover = outputFileMover; _notificationService = notificationService; }
public void MoveOutputFiles_MultipleFilesWithTwoDigits_OutputfileAppendixMustHaveTwoDigits() { var fileStub = MockRepository.GenerateStub <IFile>(); _th.GenerateGsJob(PSfiles.ThreePDFCreatorTestpages, OutputFormat.Pdf); var outputFileMover = new AutosaveOutputFileMover(new DirectoryWrap(), fileStub, _pathUtil); _th.Job.Profile.AutoSave.Enabled = true; _th.Job.TempOutputFiles = _multipleTempOutputFilesWithTwoDigits; var filenameTemplate = _th.Job.OutputFilenameTemplate; //Save it, because it can change in MoveOutputFiles outputFileMover.MoveOutputFiles(_th.Job); fileStub.AssertWasCalled(x => x.Copy("ignore", "ignore2", true), options => options.IgnoreArguments().Repeat.Times(10)); //Ten times, once for each file fileStub.AssertWasCalled(x => x.Delete("ignore"), options => options.IgnoreArguments().Repeat.Times(10)); //Ten times, once for each file Assert.AreEqual(10, _th.Job.OutputFiles.Count, "Wrong number of outputfiles."); var templateWithoutExtension = RemoveExtension(filenameTemplate); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[0], "First outputfile is not based on template from job."); StringAssert.EndsWith("01.png", _th.Job.OutputFiles[0], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[1], "Second outputfile is not based on template from job."); StringAssert.EndsWith("02.png", _th.Job.OutputFiles[1], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[2], "Third outputfile is not based on template from job."); StringAssert.EndsWith("03.png", _th.Job.OutputFiles[2], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[0], "Fouth outputfile is not based on template from job."); StringAssert.EndsWith("04.png", _th.Job.OutputFiles[3], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[1], "Fifth outputfile is not based on template from job."); StringAssert.EndsWith("05.png", _th.Job.OutputFiles[4], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[2], "Sixth outputfile is not based on template from job."); StringAssert.EndsWith("06.png", _th.Job.OutputFiles[5], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[0], "Seventh outputfile is not based on template from job."); StringAssert.EndsWith("07.png", _th.Job.OutputFiles[6], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[1], "Eighth outputfile is not based on template from job."); StringAssert.EndsWith("08.png", _th.Job.OutputFiles[7], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[2], "Nineth outputfile is not based on template from job."); StringAssert.EndsWith("09.png", _th.Job.OutputFiles[8], "Failure in file appendix."); StringAssert.StartsWith(templateWithoutExtension, _th.Job.OutputFiles[2], "Tenth outputfile is not based on template from job."); StringAssert.EndsWith("10.png", _th.Job.OutputFiles[9], "Failure in file appendix."); }
public void Test_CollectOutputFiles() { var fileStub = MockRepository.GenerateStub <IFile>(); var directoryStub = MockRepository.GenerateStub <IDirectory>(); //the only directory.GetFiles call will be in "CollectTemporaryOutputFiles, so the argument can be ignored directoryStub.Stub(x => x.GetFiles("")).Return(_singleTempOutputfile).IgnoreArguments(); _th.GenerateGsJob(PSfiles.PDFCreatorTestpage, OutputFormat.Pdf); _th.Job.Profile.AutoSave.Enabled = true; var outputFileMover = new AutosaveOutputFileMover(new DirectoryWrap(), fileStub, _pathUtil); //_th.Job.CollectTemporaryOutputFiles(); Assert.AreEqual(_singleTempOutputfile, _th.Job.TempOutputFiles, "Wrong outputfiles."); }
public void Setup() { var jobInfo = new JobInfo(); _job = new Job(jobInfo, new ConversionProfile(), new JobTranslations(), new Accounts()); _job.OutputFilenameTemplate = @"X:\temp\test.pdf"; _singleTempOutputfile = new[] { @"output1.pdf" }; _file = Substitute.For <IFile>(); _file.Exists(Arg.Any <string>()).Returns(true); _directoryHelper = Substitute.For <IDirectoryHelper>(); var path = Substitute.For <IPath>(); _pathUtil = new PathUtil(path, Substitute.For <IDirectory>()); _autosaveOutputFileMover = new AutosaveOutputFileMover(Substitute.For <IDirectory>(), _file, _pathUtil, _directoryHelper); }
public void MoveOutputFiles_SingleFile_TwoAttemptsToCopyFail_ThrowsProcessingException() { var fileStub = MockRepository.GenerateStub <IFile>(); fileStub.Stub(x => x.Copy("ignore", "ignore2", true)).IgnoreArguments().Throw(new IOException("")); //Deny all attempts to copy _th.GenerateGsJob(PSfiles.ThreePDFCreatorTestpages, OutputFormat.Pdf); var outputFileMover = new AutosaveOutputFileMover(new DirectoryWrap(), fileStub, _pathUtil); _th.Job.TempOutputFiles = _singleTempOutputfile; _th.Job.Profile.AutoSave.Enabled = true; var ex = Assert.Throws <ProcessingException>(() => outputFileMover.MoveOutputFiles(_th.Job)); Assert.AreEqual(ErrorCode.Conversion_ErrorWhileCopyingOutputFile, ex.ErrorCode); fileStub.AssertWasCalled(x => x.Copy("", "", true), options => options.IgnoreArguments().Repeat.Twice()); //DeviceException should be thrown after second denied copy call fileStub.AssertWasNotCalled(x => x.Delete("ignore"), options => options.IgnoreArguments()); //Delete never gets called }
public void MoveOutputFiles_SingleFile_AutoSaveWithoutEnsureUniqueFilenames_FileExists_OutputfileMustNotHaveAppendix() { var fileStub = MockRepository.GenerateStub <IFile>(); fileStub.Stub(x => x.Exists(Arg <string> .Is.Anything)).Return(true).Repeat.Once(); //Simulate existing file in first request for unique filename fileStub.Stub(x => x.Exists(Arg <string> .Is.Anything)).IgnoreArguments().Return(false); _th.GenerateGsJob(PSfiles.PDFCreatorTestpage, OutputFormat.Pdf); var outputFileMover = new AutosaveOutputFileMover(new DirectoryWrap(), fileStub, _pathUtil); _th.Job.Profile.AutoSave.Enabled = true; _th.Job.Profile.AutoSave.EnsureUniqueFilenames = false; _th.Job.TempOutputFiles = _singleTempOutputfile; var filenameTemplate = _th.Job.OutputFilenameTemplate; //Save it, because it can change in MoveOutputFiles outputFileMover.MoveOutputFiles(_th.Job); fileStub.AssertWasCalled(x => x.Copy("ignore", "ignore", false), options => options.IgnoreArguments().Repeat.Once()); //Copy must only be called once fileStub.AssertWasCalled(x => x.Delete("ignore"), options => options.IgnoreArguments().Repeat.Once()); //Delete must only be called once StringAssert.AreEqualIgnoringCase(filenameTemplate, _th.Job.OutputFiles[0], "Outputfile is not the template in job."); }