public void Setup() { _smtpTestAccount = new SmtpAccount(); _smtpTestAccount.AccountId = "SmtpTestAccountId"; _profile = new ConversionProfile(); //Attention _profile.EmailSmtpSettings.AccountId = _smtpTestAccount.AccountId; //The AccountAssosiation is mocked below. The _smtpTestAccount is always used. _accounts = new Accounts(); _accounts.SmtpAccounts.Add(_smtpTestAccount); _interactionRequest = new UnitTestInteractionRequest(); _interactionInvoker = Substitute.For <IInteractionInvoker>(); _interactionInvoker.Invoke(Arg.Do <PasswordOverlayInteraction>(i => i.Result = PasswordResult.StorePassword)); _interactionRequest.RegisterInteractionHandler <PasswordOverlayInteraction>(interaction => interaction.Result = PasswordResult.StorePassword); _file = Substitute.For <IFile>(); _path = Substitute.For <IPath>(); _smtpAction = Substitute.For <ISmtpMailAction>(); _smtpAction.Check(Arg.Any <ConversionProfile>(), _accounts, Arg.Any <CheckLevel>()).Returns(x => new ActionResult()); _smtpAction.ProcessJob(Arg.Any <Job>()).Returns(x => new ActionResult()); //_smtpAction.GetSmtpAccount(_profile, _accounts).Returns(_smtpTestAccount); _mailSignatureHelper = Substitute.For <IMailSignatureHelper>(); _mailSignatureHelper.ComposeMailSignature().Returns(_mailSignature); _tokenReplacer = new TokenReplacer(); _tokenReplacerFactory = Substitute.For <ITokenReplacerFactory>(); _tokenReplacerFactory.BuildTokenReplacerWithOutputfiles(Arg.Any <Job>()).Returns(_tokenReplacer); _translation = new SmtpTranslation(); }
/// <summary> /// Runs the job and all actions /// </summary> public async Task RunJob(Job job, IOutputFileMover outputFileMover) //todo: Store OutputFileMover somewhere workflow dependant { _logger.Trace("Starting job"); _logger.Debug("Output filename template is: {0}", job.OutputFileTemplate); _logger.Debug("Output format is: {0}", job.Profile.OutputFormat); _logger.Info("Converting " + job.OutputFileTemplate); SetTempFolders(job); try { _processor.Init(job); CallPreConversionActions(job); Convert(job); Process(job); await outputFileMover.MoveOutputFiles(job); if (job.OutputFiles.Count == 0) { _logger.Error("No output files were created for unknown reason"); throw new ProcessingException("No output files were created for unknown reason", ErrorCode.Conversion_UnknownError); } LogOutputFiles(job); job.TokenReplacer = _tokenReplacerFactory.BuildTokenReplacerWithOutputfiles(job); CallPostConversionActions(job); CleanUp(job); job.IsSuccessful = true; _logger.Trace("Job finished successfully"); } catch (ProcessingException ex) { _logger.Error($"The job failed: {ex.Message} ({ex.ErrorCode})"); throw; } finally { _logger.Trace("Calling job completed event"); job.CallJobCompleted(); } }
/// <summary> /// Runs the job and all actions /// </summary> public void RunJob(Job job) { _logger.Trace("Starting job"); SetTempFolders(job); try { _processor.Init(job); var actions = SetUpActions(job); _conversionProgress.Show(job); Convert(job); Process(job); _outputFileMover.MoveOutputFiles(job); if (job.OutputFiles.Count == 0) { _logger.Error("No output files were created for unknown reason"); throw new ProcessingException("No output files were created for unknown reason", ErrorCode.Conversion_UnknownError); } LogOutputFiles(job); job.TokenReplacer = _tokenReplacerFactory.BuildTokenReplacerWithOutputfiles(job); CallActions(job, actions); CleanUp(job); _logger.Trace("Job finished successfully"); } catch (ProcessingException ex) { _logger.Error($"The job failed: {ex.Message} ({ex.ErrorCode})"); throw; } finally { _logger.Trace("Calling job completed event"); job.CallJobCompleted(); }; }
/// <summary> /// Runs the job and all actions /// </summary> public async Task RunJob(Job job, IOutputFileMover outputFileMover) //todo: Store OutputFileMover somewhere workflow dependant { _logger.Trace("Starting job"); _logger.Debug("Output filename template is: {0}", job.OutputFileTemplate); _logger.Debug("Output format is: {0}", job.Profile.OutputFormat); _logger.Info("Converting " + job.OutputFileTemplate); SetTempFolders(job); try { // TODO: Use async/await _actionExecutor.CallPreConversionActions(job); _processingHelper.ApplyFormatRestrictionsToProfile(job); var converter = _converterFactory.GetConverter(job.JobInfo.JobType); var reportProgress = new EventHandler <ConversionProgressChangedEventArgs>((sender, args) => job.ReportProgress(args.Progress)); converter.OnReportProgress += reportProgress; var isPdf = job.Profile.OutputFormat.IsPdf(); var isProcessingRequired = _processingHelper.IsProcessingRequired(job); converter.Init(isPdf, isProcessingRequired); converter.FirstConversionStep(job); _actionExecutor.CallConversionActions(job); converter.SecondConversionStep(job); converter.OnReportProgress -= reportProgress; await outputFileMover.MoveOutputFiles(job); if (job.OutputFiles.Count == 0) { _logger.Error("No output files were created for unknown reason"); throw new ProcessingException("No output files were created for unknown reason", ErrorCode.Conversion_UnknownError); } LogOutputFiles(job); job.TokenReplacer = _tokenReplacerFactory.BuildTokenReplacerWithOutputfiles(job); _actionExecutor.CallPostConversionActions(job); CleanUp(job); job.IsSuccessful = true; _logger.Trace("Job finished successfully"); } catch (Exception ex) { if (ex is ProcessingException processingException) { _logger.Error($"The job failed: {processingException.Message} ({processingException.ErrorCode})"); } else { _logger.Error(ex, $"The job failed: {ex.Message}"); } if (job.CleanUpOnError) { CleanUp(job); } throw; } finally { _logger.Trace("Calling job completed event"); job.CallJobCompleted(); } }