Esempio n. 1
0
        public async Task HandleMemberSubscriptionAsync_UnsubscribedSubscriber_ShouldBeResubscribedWithStatusPending()
        {
            //arrange
            var nullLogger             = new NullLogger <SubscriberService>();
            var fakeRepository         = new FakeMailchimpRepository();
            var subscriberService      = new SubscriberService(nullLogger, fakeRepository);
            var unsubscribedSubscriber = new NewSubscriberDto()
            {
                Email  = "*****@*****.**",
                Name   = "Unsubscribed",
                Source = "UnitTest"
            };

            //assume
            var assumedMember = await fakeRepository.GetMemberAsync(unsubscribedSubscriber.Email);

            Assume.That(
                assumedMember?.Status ==
                "unsubscribed", "Missing unsubscribed member in the collection");

            //act
            await subscriberService.HandleMemberSubscriptionAsync(unsubscribedSubscriber);

            MemberDto receivedMember = await fakeRepository.GetMemberAsync(unsubscribedSubscriber.Email);

            //assert
            Assert.Equal(unsubscribedSubscriber.Email, receivedMember.EmailAddress);
            Assert.Equal("pending", receivedMember.Status);
        }
Esempio n. 2
0
        public async Task HandleMemberSubscriptionAsync_Pending_ShouldBeChangedByEmailsServiceToUnsubscribedThanPending()
        {
            //arrange
            var nullLogger        = new NullLogger <SubscriberService>();
            var fakeRepository    = new FakeMailchimpRepository();
            var subscriberService = new SubscriberService(nullLogger, fakeRepository);
            var newSubscriber     = new NewSubscriberDto()
            {
                Email  = "*****@*****.**",
                Name   = "Marek",
                Source = "UnitTest"
            };

            //act
            await subscriberService.HandleMemberSubscriptionAsync(newSubscriber);

            MemberDto receivedMember = await fakeRepository.GetMemberAsync(newSubscriber.Email);

            var memberHistory = fakeRepository.Members["*****@*****.**"];

            //assert
            Assert.Equal(3, memberHistory.Count);
            Assert.Equal(newSubscriber.Email, receivedMember.EmailAddress);
            Assert.Equal("unsubscribed", memberHistory.ElementAt(1).Status);
            Assert.Equal("pending", receivedMember.Status);
        }
Esempio n. 3
0
        public async Task HandleMemberSubscriptionAsync_AlreadySubscribed_ShouldBeNotChanged()
        {
            //arrange
            var nullLogger           = new NullLogger <SubscriberService>();
            var fakeRepository       = new FakeMailchimpRepository();
            var subscriberService    = new SubscriberService(nullLogger, fakeRepository);
            var subscribedSubscriber = new NewSubscriberDto()
            {
                Email  = "*****@*****.**",
                Name   = "Subscribed",
                Source = "UnitTest"
            };

            //assume
            var assumedMember = await fakeRepository.GetMemberAsync(subscribedSubscriber.Email);

            Assume.That(
                assumedMember?.Status ==
                "subscribed", "Missing subscribed member in the collection");

            //act
            await subscriberService.HandleMemberSubscriptionAsync(subscribedSubscriber);

            MemberDto receivedMember = await fakeRepository.GetMemberAsync(subscribedSubscriber.Email);

            var memberChanges = fakeRepository.Members["*****@*****.**"];

            //assert
            Assert.Single(memberChanges);
            Assert.Equal(subscribedSubscriber.Email, receivedMember.EmailAddress);
            Assert.Equal("subscribed", receivedMember.Status);
        }
Esempio n. 4
0
        public async Task HandleMemberSubscriptionAsync_NewSubscriber_ShouldBeAddedToEmailsServiceWithStatusPending()
        {
            //arrange
            var nullLogger        = new NullLogger <SubscriberService>();
            var fakeRepository    = new FakeMailchimpRepository();
            var subscriberService = new SubscriberService(nullLogger, fakeRepository);
            var newSubscriber     = new NewSubscriberDto()
            {
                Email  = "*****@*****.**",
                Name   = "Marek",
                Source = "UnitTest"
            };

            //act
            await subscriberService.HandleMemberSubscriptionAsync(newSubscriber);

            MemberDto receivedMember = await fakeRepository.GetMemberAsync(newSubscriber.Email);

            //assert
            Assert.Equal(newSubscriber.Email, receivedMember.EmailAddress);
            Assert.Equal("pending", receivedMember.Status);
        }