示例#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);
        }
示例#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);
        }
示例#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);
        }
示例#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);
        }
示例#5
0
        public async Task <IActionResult> Generate([FromBody] BudgetDto input)
        {
            _budget = input;

            if (_jwtToken.UserId == null)
            {
                return(new UnauthorizedResult());
            }

            _log.LogInformation($"Budget: {JsonConvert.SerializeObject(_budget)}");

            var auth0User = await _userManagementService.GetAuth0UserAsync(_jwtToken.UserId);

            if (_budget.User.AgreedToNewsletter)
            {
                if (!string.IsNullOrEmpty(auth0User.Email))
                {
                    await _subscriberService.HandleMemberSubscriptionAsync(new NewSubscriberDto()
                    {
                        Email  = auth0User.Email,
                        Name   = auth0User?.GivenName ?? "",
                        Source = "MVP-Generator",
                    });
                }
            }

            await SaveBudgetAsync(_jwtToken.UserId);

            _log.LogInformation($"Auth0User: {JsonConvert.SerializeObject(auth0User)}");

            CleanUpTheData(_budget);
            var    googleSpreadsheet = GetRequestJsonForGoogle();
            string googleRespone     = await CreateSpreadsheet(auth0User, googleSpreadsheet);

            return(Ok(googleRespone));
        }
示例#6
0
        public async Task Run([QueueTrigger("mailchimp-subscriptions", Connection = "AzureWebJobsMailchimpServiceQueue")] NewSubscriberDto userToSubscribe, ILogger log)
        {
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {JsonConvert.SerializeObject(userToSubscribe)}");

            await _subscriberService.HandleMemberSubscriptionAsync(userToSubscribe);
        }