public virtual ActionResult TestEmail() { LogI("TestEmail"); var company = AccessManager.Company; var smtpSettings = CompanyHelper.GetSmtpSettings(company); var byName = AccessManager.UserName; var result = ComposeEmailViewModel.FromTemplate(Db, EmailService, String.Empty, company, byName, EmailTypes.System, smtpSettings); var model = new ComposeEmailViewModel(); if (result.Status == CallStatus.Success) { model = result.Data; } model.Subject = "Check email from web page"; model.ToEmail = "*****@*****.**"; model.ToName = "Support"; return(View("ComposeEmail", model)); }
public void WhenRequestedForVetoOnNavigationAfterSubmitting_ThenDoesNotRaiseInteractionRequest() { var emailServiceMock = new Mock <IEmailService>(); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); var navService = new Mock <IRegionNavigationService>(); var region = new Mock <IRegion>(); region.SetupGet(x => x.Context).Returns(null); navService.SetupGet(x => x.Region).Returns(region.Object); ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(navService.Object, new Uri("[email protected]", UriKind.Relative))); InteractionRequestedEventArgs args = null; viewModel.ConfirmExitInteractionRequest.Raised += (s, e) => args = e; viewModel.SendEmailCommand.Execute(null); bool?callbackResult = null; ((IConfirmNavigationRequest)viewModel).ConfirmNavigationRequest( new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("some uri", UriKind.Relative)), b => callbackResult = b); Assert.IsNull(args); Assert.IsTrue(callbackResult.Value); }
public virtual ActionResult Validate(ComposeEmailViewModel model) { LogI("Validate, model=" + model); var messages = model.Validate(Db, LogService, Time.GetAppNowTime()); return(JsonGet(new ValueResult <IList <MessageString> >(true, "", messages))); }
public void WhenRequestedForVetoOnNavigationAfterSubmitting_ThenDoesNotRaiseInteractionRequest() { var emailServiceMock = new Mock <IEmailService>(); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); var uriQuery = new UriQuery(); uriQuery.Add("To", "*****@*****.**"); ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("" + uriQuery.ToString(), UriKind.Relative))); InteractionRequestedEventArgs args = null; viewModel.ConfirmExitInteractionRequest.Raised += (s, e) => args = e; viewModel.SendEmailCommand.Execute(null); bool?callbackResult = null; ((IConfirmNavigationRequest)viewModel).ConfirmNavigationRequest( new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("some uri", UriKind.Relative)), b => callbackResult = b); Assert.IsNull(args); Assert.IsTrue(callbackResult.Value); }
public void WhenAcceptingConfirmationToNavigateAway_ThenInvokesRequestCallbackWithTrue() { var emailServiceMock = new Mock <IEmailService>(); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); var uriQuery = new UriQuery(); uriQuery.Add("To", "*****@*****.**"); ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("" + uriQuery.ToString(), UriKind.Relative))); InteractionRequestedEventArgs args = null; viewModel.ConfirmExitInteractionRequest.Raised += (s, e) => args = e; bool?callbackResult = null; ((IConfirmNavigationRequest)viewModel).ConfirmNavigationRequest( new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("some uri", UriKind.Relative)), b => callbackResult = b); var confirmation = args.Context as Confirmation; confirmation.Confirmed = true; args.Callback(); Assert.IsTrue(callbackResult.Value); }
public void WhenAcceptingConfirmationToNavigateAway_ThenInvokesRequestCallbackWithTrue() { var emailServiceMock = new Mock <IEmailService>(); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); var navService = new Mock <IRegionNavigationService>(); var region = new Mock <IRegion>(); region.SetupGet(x => x.Context).Returns(null); navService.SetupGet(x => x.Region).Returns(region.Object); ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(navService.Object, new Uri("[email protected]", UriKind.Relative))); InteractionRequestedEventArgs args = null; viewModel.ConfirmExitInteractionRequest.Raised += (s, e) => args = e; bool?callbackResult = null; ((IConfirmNavigationRequest)viewModel).ConfirmNavigationRequest( new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("some uri", UriKind.Relative)), b => callbackResult = b); var confirmation = args.Context as Confirmation; confirmation.Confirmed = true; args.Callback(); Assert.IsTrue(callbackResult.Value); }
public void WhenFinishedSendingMessage_ThenNavigatesBack() { var sendEmailResultMock = new Mock <IAsyncResult>(); var emailServiceMock = new Mock <IEmailService>(); emailServiceMock .Setup(svc => svc.SendEmailDocumentAsync(It.IsAny <EmailDocument>())) .Returns(Task.FromResult <object>(null)); var journalMock = new Mock <IRegionNavigationJournal>(); journalMock.Setup(j => j.GoBack()).Verifiable(); var navigationServiceMock = new Mock <IRegionNavigationService>(); navigationServiceMock.SetupGet(svc => svc.Journal).Returns(journalMock.Object); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(navigationServiceMock.Object, new Uri("", UriKind.Relative))); viewModel.SendEmailCommand.Execute(null); // The action is performed asynchronously in the view model, so we need to wait until it's completed. Thread.Sleep(500); Assert.AreEqual("Sent", viewModel.SendState); journalMock.VerifyAll(); }
public void WhenNavigatedToWithAToQueryParameter_ThenInitializesToField() { var emailServiceMock = new Mock <IEmailService>(); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); var uriQuery = new UriQuery(); uriQuery.Add("To", "*****@*****.**"); ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("" + uriQuery.ToString(), UriKind.Relative))); Assert.AreEqual("*****@*****.**", viewModel.EmailDocument.To); }
public void WhenSendMessageCommandIsExecuted_ThenSendsMessageThroughService() { var emailServiceMock = new Mock <IEmailService>(); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("", UriKind.Relative))); viewModel.SendEmailCommand.Execute(null); Assert.AreEqual("Sending", viewModel.SendState); emailServiceMock.Verify(svc => svc.BeginSendEmailDocument(viewModel.EmailDocument, It.IsAny <AsyncCallback>(), null)); }
public void WhenNavigatedToWithAToQueryParameter_ThenInitializesToField() { var emailServiceMock = new Mock <IEmailService>(); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); var navService = new Mock <IRegionNavigationService>(); var region = new Mock <IRegion>(); region.SetupGet(x => x.Context).Returns(null); navService.SetupGet(x => x.Region).Returns(region.Object); ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(navService.Object, new Uri("[email protected]", UriKind.Relative))); Assert.AreEqual("*****@*****.**", viewModel.EmailDocument.To); }
public void WhenFinishedSendingMessage_ThenNavigatesBack() { var sendEmailResultMock = new Mock <IAsyncResult>(); var emailServiceMock = new Mock <IEmailService>(); AsyncCallback callback = null; emailServiceMock .Setup(svc => svc.BeginSendEmailDocument(It.IsAny <EmailDocument>(), It.IsAny <AsyncCallback>(), null)) .Callback <EmailDocument, AsyncCallback, object>((e, c, o) => { callback = c; }) .Returns(sendEmailResultMock.Object); emailServiceMock .Setup(svc => svc.EndSendEmailDocument(sendEmailResultMock.Object)) .Verifiable(); var journalMock = new Mock <IRegionNavigationJournal>(); journalMock.Setup(j => j.GoBack()).Verifiable(); var navigationServiceMock = new Mock <IRegionNavigationService>(); navigationServiceMock.SetupGet(svc => svc.Journal).Returns(journalMock.Object); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(navigationServiceMock.Object, new Uri("", UriKind.Relative))); viewModel.SendEmailCommand.Execute(null); this.EnqueueConditional(() => callback != null); this.EnqueueCallback( () => { callback(sendEmailResultMock.Object); }); this.EnqueueCallback( () => { Assert.AreEqual("Sent", viewModel.SendState); journalMock.VerifyAll(); }); this.EnqueueTestComplete(); }
public virtual ActionResult ComposeEmail(string orderNumber) { LogI("ComposeEmail, orderNumber=" + orderNumber); var company = AccessManager.Company; var smtpSettings = CompanyHelper.GetSmtpSettings(company); var byName = AccessManager.UserName; var result = ComposeEmailViewModel.GetTemplateInfo(Db, EmailService, company, byName, EmailTypes.CustomEmail, smtpSettings, orderNumber, null); return(View("ComposeEmail", result.Data)); }
public void WhenNavigatedToWithAReplyToQueryParameter_ThenRepliesToTheAppropriateMessage() { var replyToEmail = new EmailDocument { From = "*****@*****.**", To = "", Subject = "", Text = "" }; var emailServiceMock = new Mock <IEmailService>(); emailServiceMock .Setup(svc => svc.GetEmailDocument(replyToEmail.Id)) .Returns(replyToEmail); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); var uriQuery = new UriQuery(); uriQuery.Add("ReplyTo", replyToEmail.Id.ToString("N")); ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("" + uriQuery.ToString(), UriKind.Relative))); Assert.AreEqual("*****@*****.**", viewModel.EmailDocument.To); }
public void WhenCancelling_ThenNavigatesBack() { var emailServiceMock = new Mock <IEmailService>(); var viewModel = new ComposeEmailViewModel(emailServiceMock.Object); var journalMock = new Mock <IRegionNavigationJournal>(); var navigationServiceMock = new Mock <IRegionNavigationService>(); navigationServiceMock.SetupGet(svc => svc.Journal).Returns(journalMock.Object); ((INavigationAware)viewModel).OnNavigatedTo( new NavigationContext( navigationServiceMock.Object, new Uri("location", UriKind.Relative))); viewModel.CancelEmailCommand.Execute(null); journalMock.Verify(j => j.GoBack()); }
public virtual ActionResult ReplyTo(long replyToId, string orderNumber, EmailTypes?type) { LogI("ReplyTo, orderNumber=" + orderNumber + ", type=" + type + ", replyToId=" + replyToId); var company = AccessManager.Company; var smtpSettings = CompanyHelper.GetSmtpSettings(company); var byName = AccessManager.UserName; var result = ComposeEmailViewModel.GetTemplateInfo(Db, EmailService, company, byName, type ?? EmailTypes.CustomEmail, smtpSettings, orderNumber, replyToId); return(View("ComposeEmail", result.Data)); }
public virtual ActionResult ComposeEmailFromTemplate(string orderNumber, EmailTypes type, long?replyToId) { LogI("ComposeEmailFromTemplate, orderNumber=" + orderNumber + ", type=" + type.ToString() + ", replyToEmailId=" + replyToId); var company = AccessManager.Company; var smtpSettings = CompanyHelper.GetSmtpSettings(company); var byName = AccessManager.UserName; var result = ComposeEmailViewModel.GetTemplateInfo(Db, EmailService, company, byName, type, smtpSettings, orderNumber, replyToId); return(View("ComposeEmail", result.Data)); }
public virtual ActionResult SendEmail(ComposeEmailViewModel model) { try { var by = AccessManager.UserId; var company = AccessManager.Company; var emailService = new EmailService(LogService, SettingsBuilder.GetSmtpSettingsFromCompany(company), AddressService); model.SendEmail(Db, LogService, emailService, QuantityManager, Time.GetAppNowTime(), by); return(Json(new MessagesResult(true).Success("Message has been successfully sent"))); } catch (Exception ex) { LogE("Reply All", ex); return(Json(new MessagesResult(false).Error("Can't send email. Details: " + ex.Message))); } }
public virtual ActionResult GetTemplateInfo(string orderNumber, EmailTypes type, long?replyToId) { LogI("GetTemplateInfo, orderNumber=" + orderNumber + ", type=" + type + ", replyToId=" + replyToId); var company = AccessManager.Company; var smtpSettings = CompanyHelper.GetSmtpSettings(company); var byName = AccessManager.UserName; var result = ComposeEmailViewModel.GetTemplateInfo(Db, EmailService, company, byName, (EmailTypes)type, smtpSettings, orderNumber, replyToId); return(Json(new ValueResult <ComposeEmailViewModel>(result.Status == CallStatus.Success, result.Message, result.Data), JsonRequestBehavior.AllowGet)); }
public ComposeEmailView(ComposeEmailViewModel viewModel) { InitializeComponent(); this.ViewModel = viewModel; }