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); }
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); }
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); }
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); }
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)); }
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); }