public async Task Then_Add_To_Failed_Queue_If_Status_Is_Not_Delivered( string status, MatchingConfiguration configuration, IEmailService emailService, IOpportunityRepository opportunityRepository, IMessageQueueService messageQueueService, ILogger <Application.Services.EmailDeliveryStatusService> logger, EmailDeliveryStatusPayLoad payload ) { //Arrange payload.Status = status; var sut = new Application.Services.EmailDeliveryStatusService(configuration, emailService, opportunityRepository, messageQueueService, logger); var serializedPayLoad = JsonConvert.SerializeObject(payload); //Act await sut.HandleEmailDeliveryStatusAsync(serializedPayLoad); //Assert await emailService.Received(1).UpdateEmailStatus(Arg.Is <EmailDeliveryStatusPayLoad>(data => data.Status == status)); await messageQueueService.Received(1).PushEmailDeliveryStatusMessageAsync(Arg.Any <SendEmailDeliveryStatus>()); }
public async Task Then_Do_Not_Update_Email_History_If_PayLoad_Is_Null_Or_Empty( string payload, MatchingConfiguration configuration, IRepository <Domain.Models.EmailHistory> emailHistoryRepository, IEmailService emailService, IOpportunityRepository opportunityRepository, IMessageQueueService messageQueueService, ILogger <Application.Services.EmailDeliveryStatusService> logger, Domain.Models.EmailHistory emailHistory ) { //Arrange emailHistoryRepository .GetFirstOrDefaultAsync(Arg.Any <Expression <Func <Domain.Models.EmailHistory, bool> > >()) .Returns(emailHistory); var sut = new Application.Services.EmailDeliveryStatusService(configuration, emailService, opportunityRepository, messageQueueService, logger); //Act var result = await sut.HandleEmailDeliveryStatusAsync(payload); //Assert result.Should().Be(-1); await emailHistoryRepository.DidNotReceive().GetFirstOrDefaultAsync(Arg.Any <Expression <Func <Domain.Models.EmailHistory, bool> > >()); await emailHistoryRepository.DidNotReceive().UpdateWithSpecifiedColumnsOnlyAsync( Arg.Any <Domain.Models.EmailHistory>(), Arg.Any <Expression <Func <Domain.Models.EmailHistory, object> >[]>()); await messageQueueService.DidNotReceive().PushEmailDeliveryStatusMessageAsync(Arg.Any <SendEmailDeliveryStatus>()); }
public async Task Then_Update_Email_History_With_Status( string status, MatchingConfiguration configuration, IEmailService emailService, IOpportunityRepository opportunityRepository, IMessageQueueService messageQueueService, ILogger <Application.Services.EmailDeliveryStatusService> logger, EmailDeliveryStatusPayLoad payload ) { //Arrange var sut = new Application.Services.EmailDeliveryStatusService(configuration, emailService, opportunityRepository, messageQueueService, logger); payload.Status = status; var serializedPayLoad = JsonConvert.SerializeObject(payload); emailService.UpdateEmailStatus(Arg.Any <EmailDeliveryStatusPayLoad>()).Returns(1); //Act var emailCount = await sut.HandleEmailDeliveryStatusAsync(serializedPayLoad); //Assert emailCount.Should().Be(1); await emailService.Received(1).UpdateEmailStatus(Arg.Any <EmailDeliveryStatusPayLoad>()); await emailService.Received(1).UpdateEmailStatus(Arg.Is <EmailDeliveryStatusPayLoad>(data => data.Status == status)); }
public async Task Then_Do_Not_Update_Email_History_If_Notification_Id_Does_Not_Exists_In_Callback_PayLoad( string status, MatchingConfiguration configuration, IEmailService emailService, IOpportunityRepository opportunityRepository, IMessageQueueService messageQueueService, ILogger <Application.Services.EmailDeliveryStatusService> logger, EmailDeliveryStatusPayLoad payload ) { //Arrange payload.Id = Guid.Empty; payload.Status = status; var sut = new Application.Services.EmailDeliveryStatusService(configuration, emailService, opportunityRepository, messageQueueService, logger); var serializedPayLoad = JsonConvert.SerializeObject(payload); emailService.UpdateEmailStatus(Arg.Any <EmailDeliveryStatusPayLoad>()).Returns(-1); //Act var result = await sut.HandleEmailDeliveryStatusAsync(serializedPayLoad); //Assert result.Should().Be(-1); await emailService.Received(1).UpdateEmailStatus(Arg.Is <EmailDeliveryStatusPayLoad>(data => data.Status == status)); await messageQueueService.DidNotReceive().PushEmailDeliveryStatusMessageAsync(Arg.Any <SendEmailDeliveryStatus>()); }