Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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"));
                    }
                });
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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"));
                    }
                });
            }
        }
Esempio n. 5
0
        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));
                });
        }
Esempio n. 6
0
 public SeedDiscrepancyController(IDiscrepanciesService service)
 {
     _service = service;
 }