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_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_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 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 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."); }
public void MoveOutPutFiles_InvalidRootedPath_ThrowsAbortWorkflowException() { _job.OutputFilenameTemplate = @"test.pdf"; Assert.Throws <AbortWorkflowException>(() => _autosaveOutputFileMover.MoveOutputFiles(_job)); }