示例#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);
            }
        }