public void ThrowsExceptionWhenAddingTheSameEmailUpdatesExistingDataWithNewDataAndOnRetryFails() { var leadRepository = new Mock <LocalRepository <Contact> > { CallBase = true }; var serverTime = new Mock <IServerTime>(); var emailLead = ModelHelper.EmailLead; var xDataProvider = new Mock <IExternalDataProvider>(); var contactAutoRating = new Mock <IContactAutoRating>(); leadRepository.Setup(er => er.SaveChanges()).Throws(new Exception()); leadRepository.Object.Add(emailLead); var clientRepository = new LocalRepository <Client>(); var client = ModelHelper.TestClient1AllDataNoReferences; clientRepository.Add(client); var contactService = new Mock <IContactService>(); var emailController = new WebhookController(leadRepository.Object, clientRepository, contactService.Object, serverTime.Object, xDataProvider.Object, contactAutoRating.Object); emailController.MandrillContentWebhook(new MadrillContentPost { id = "1", html = "<p>Very New Sample Text</p>", text = "Very New Sample Text", to = "*****@*****.**" }); Assert.AreEqual(0, leadRepository.Object.Where(er => er.Property.Any(lp => lp.Type == "Html" && lp.Value == "<p>Very New Sample Text</p>")).Count()); Assert.AreEqual(0, leadRepository.Object.Where(er => er.Property.Any(lp => lp.Type == "Text" && lp.Value == "Very New Sample Text")).Count()); Assert.AreEqual(1, leadRepository.Object.Where(er => er.Property.Any(lp => lp.Type == "Text" && lp.Value == "New Sample Text")).Count()); contactAutoRating.Verify(ar => ar.SetAutoRating(It.IsAny <Contact>()), Times.Exactly(2)); contactService.Verify(cs => cs.NotifyClientsForNewContactWithEmail(It.IsAny <int>()), Times.Never); contactService.Verify(cs => cs.NotifyClientsForNewContactWithPhoneNotification(It.IsAny <int>()), Times.Never); contactService.Verify(cs => cs.NotifyClientsForNewContactWithSmsNotification(It.IsAny <int>()), Times.Never); }
public void MandrillContentWebhookDoesntHaveEmailInRepository() { var leadRepository = new LocalRepository <Contact>(); var emailLead = ModelHelper.EmailLead; leadRepository.Add(emailLead); var serverTime = new Mock <IServerTime>(); var clientRepository = new LocalRepository <Client>(); clientRepository.Add(ModelHelper.TestClient1AllDataNoReferences); var xDataProvider = new Mock <IExternalDataProvider>(); var contactAutoRating = new Mock <IContactAutoRating>(); var contactService = new Mock <IContactService>(); serverTime.Setup(st => st.RequestStarted).Returns(new DateTime(2013, 01, 01, 9, 0, 0)); var emailController = new WebhookController(leadRepository, clientRepository, contactService.Object, serverTime.Object, xDataProvider.Object, contactAutoRating.Object); emailController.MandrillContentWebhook(new MadrillContentPost { id = "2", html = "<p>New Sample Text</p>", text = "New Sample Text", to = "*****@*****.**" }); Assert.AreEqual(2, leadRepository.All().Count()); Assert.AreEqual("New Sample Text", leadRepository.Where(e => e.Property.Any(lp => lp.Type == "MandrillId" && lp.Value == "2")).First().Property.First(lp => lp.Type == "Text").Value); Assert.AreEqual("<p>New Sample Text</p>", leadRepository.Where(e => e.Property.Any(lp => lp.Type == "MandrillId" && lp.Value == "2")).First().Property.First(lp => lp.Type == "Html").Value); contactAutoRating.Verify(ar => ar.SetAutoRating(It.IsAny <Contact>()), Times.Once()); contactService.Verify(cs => cs.NotifyClientsForNewContactWithEmail(It.IsAny <int>()), Times.Once()); contactService.Verify(cs => cs.NotifyClientsForNewContactWithPhoneNotification(It.IsAny <int>()), Times.Once()); contactService.Verify(cs => cs.NotifyClientsForNewContactWithSmsNotification(It.IsAny <int>()), Times.Once()); }