private static void VerifyDiscrepancyResolution(IDiscrepanciesService service) { // Assort var account = new Account { EmailAddress = "*****@*****.**", FirstName = "Amaury", LastName = "Rodriguez", ProviderId = (int)Domain.Engagement.Providers.ProviderType.Yahoo }; var subscriber = default(Subscriber); var notExistingSeedDiscrepancy = SeedDiscrepancy.FromEngager(account, subscriber); // Act var result = service.Resolve(notExistingSeedDiscrepancy).Result; // Assert Assert.IsTrue(result.Succeeded); Assert.AreEqual(SeedDiscrepancy.ResolvedMessage, result.Messages); Assert.AreEqual(notExistingSeedDiscrepancy, result.Source); using (var ctx = new SubscribersContext()) { var provider = WD40.Domain.Engagement.Providers.Registry.Instance[notExistingSeedDiscrepancy.Account.Value.ProviderId]; var metadata = service.GetMetadataForProviderAsync(provider.SubscriberId).Result; subscriber = ctx.FromStore(metadata.DatabaseName, metadata.TableName).GetSubscribers(s => s.email.Trim() == notExistingSeedDiscrepancy.EmailAddress).Result.SingleOrDefault(); Assert.IsNotNull(subscriber); Assert.AreEqual(subscriber.send, 1); } // TODO: Update subscriber set Mailable = false subscriber.SetMailable(false); var notMailableSeedDiscrepancy = SeedDiscrepancy.FromEngager(account, subscriber); // Act result = service.Resolve(notMailableSeedDiscrepancy).Result; // Assert Assert.IsTrue(result.Succeeded); Assert.AreEqual(SeedDiscrepancy.ResolvedMessage, result.Messages); Assert.AreEqual(notMailableSeedDiscrepancy, result.Source); using (var ctx = new SubscribersContext()) { var provider = WD40.Domain.Engagement.Providers.Registry.Instance[notExistingSeedDiscrepancy.Account.Value.ProviderId]; var metadata = service.GetMetadataForProviderAsync(provider.SubscriberId).Result; subscriber = ctx.FromStore(metadata.DatabaseName, metadata.TableName).GetSubscribers(s => s.email.Trim() == notExistingSeedDiscrepancy.EmailAddress).Result.SingleOrDefault(); Assert.IsNotNull(subscriber); Assert.AreEqual(subscriber.send, 1); // Clean Up var wasDeleted = ctx.Delete(subscriber).Result; Assert.IsTrue(wasDeleted); subscriber = ctx.GetSubscribers(s => s.email.Trim() == notExistingSeedDiscrepancy.EmailAddress).Result.SingleOrDefault(); Assert.IsNull(subscriber); } }
private static void VerifyWhiteDeliveryDiscrepancies(IDiscrepanciesService service, Mapping provider, int daysCreated) { var result = service.GetNotEngagedMailableItemsAsync(provider.ProviderId, provider.SubscriberId, daysCreated).Result; // Assert if (result.Any()) { result.Take(MaxAccountsToVerify).ToList().ForEach(x => { if (x.Account.HasValue) { using (var ctx = new EngagerContext()) { var id = x.Account.Value.AccountId; var account = ctx.Accounts.FirstOrDefault(acc => acc.AccountId == id); Assert.IsNotNull(account); Assert.IsFalse(account.IsActive); } Assert.AreEqual(x.Description, SeedDiscrepancy.NotMailableSeedMessage); } else { using (var ctx = new EngagerContext()) { var oldestDateCreated = DateTime.Today.AddDays(-daysCreated); var account = ctx.Accounts.FirstOrDefault(acc => (acc.DateAccountCreated >= oldestDateCreated) && (acc.EmailAddress == x.EmailAddress)); Assert.IsNull(account); } Assert.AreEqual(x.Description, string.Format(SeedDiscrepancy.MissingSeedMessage, "Engager")); } }); } }
private static void CheckWhiteDeliveryDiscrepancies(IDiscrepanciesService service) { // Assort const int daysCreated = 30; // Act & Assert var provider = WD40.Domain.Engagement.Providers.Registry.Instance[WD40.Domain.Engagement.Providers.ProviderType.Yahoo]; VerifyWhiteDeliveryDiscrepancies(service, provider, daysCreated); // Act & Assert provider = WD40.Domain.Engagement.Providers.Registry.Instance[WD40.Domain.Engagement.Providers.ProviderType.Hotmail]; VerifyWhiteDeliveryDiscrepancies(service, provider, daysCreated); }
private static void VerifyEngagerDiscrepancies(IDiscrepanciesService service, Mapping provider, int daysCreated) { var result = service.GetNotMailableEngagedItemsAsync(provider.ProviderId, provider.SubscriberId, daysCreated).Result; // Assert if (result.Any()) { result.Take(MaxAccountsToVerify).ToList().ForEach(x => { if (x.Subscriber.HasValue) { using (var ctx = new SubscribersContext()) { var metadata = service.GetMetadataForProviderAsync(provider.SubscriberId).Result; var subscriber = ctx.FromStore(metadata.DatabaseName, metadata.TableName).GetSubscribers(s => s.subscriber_id == x.Subscriber.Value.SubscriberId).Result.SingleOrDefault(); Assert.IsNotNull(subscriber); Assert.AreEqual(subscriber.send, 0); } Assert.AreEqual(x.Description, SeedDiscrepancy.NotMailableSeedMessage); } else { using (var ctx = new SubscribersContext()) { var metadata = service.GetMetadataForProviderAsync(provider.SubscriberId).Result; var subscriber = ctx.FromStore(metadata.DatabaseName, metadata.TableName).GetSubscribers(s => s.email == x.EmailAddress).Result.SingleOrDefault(); Assert.IsNull(subscriber); } Assert.AreEqual(x.Description, string.Format(SeedDiscrepancy.MissingSeedMessage, "WD")); } }); } }
private static void VerifyMetadataAvailable(IDiscrepanciesService service) { // Act (new[] { "Yahoo", "Hotmail", "Aol", "Gmail" }) .ToList() .ForEach(x => { var provider = WD40.Domain.Engagement.Providers.Registry.Instance[x]; // Assert Assert.IsNotNull(provider); var metadata = service.GetMetadataForProviderAsync(provider.SubscriberId).Result; // Assert Assert.IsNotNull(metadata); Assert.IsFalse(String.IsNullOrWhiteSpace(metadata.DatabaseName)); Assert.IsFalse(String.IsNullOrWhiteSpace(metadata.TableName)); }); }
public SeedDiscrepancyController(IDiscrepanciesService service) { _service = service; }