public async Task Then_The_Email_Is_Not_Sent_If_Already_Verified_On_Get_Demand( VerifyEmployerDemandCommand command, PostEmployerCourseDemand verifyEmailResponse, GetEmployerDemandResponse getDemandResponse, [Frozen] Mock <IEmployerDemandApiClient <EmployerDemandApiConfiguration> > apiClient, [Frozen] Mock <INotificationService> notificationService, VerifyEmployerDemandCommandHandler handler) { //Arrange getDemandResponse.EmailVerified = true; apiClient.Setup(x => x.Get <GetEmployerDemandResponse>( It.Is <GetEmployerDemandRequest>(c => c.GetUrl.Contains($"demand/{command.Id}")))) .ReturnsAsync(getDemandResponse); //Act var actual = await handler.Handle(command, CancellationToken.None); //Assert apiClient.Verify(client => client.PatchWithResponseCode( It.IsAny <PatchCourseDemandRequest>()), Times.Never); notificationService.Verify(service => service.Send(It.IsAny <SendEmailCommand>()), Times.Never); actual.EmployerDemand.Should().BeEquivalentTo(getDemandResponse); }
public async Task Then_The_Api_Is_Called_And_Email_Sent_If_ResponseCode_Is_Created( RegisterDemandCommand command, PostEmployerCourseDemand responseBody, [Frozen] Mock <IEmployerDemandApiClient <EmployerDemandApiConfiguration> > apiClient, [Frozen] Mock <INotificationService> mockNotificationService, RegisterDemandCommandHandler handler) { //Arrange var apiResponse = new ApiResponse <PostEmployerCourseDemand>(responseBody, HttpStatusCode.Created, ""); apiClient.Setup(x => x.PostWithResponseCode <PostEmployerCourseDemand>(It.Is <PostCreateCourseDemandRequest>(c => ((CreateCourseDemandData)c.Data).Id.Equals(command.Id) && ((CreateCourseDemandData)c.Data).ContactEmailAddress.Equals(command.ContactEmailAddress) && ((CreateCourseDemandData)c.Data).OrganisationName.Equals(command.OrganisationName) && ((CreateCourseDemandData)c.Data).NumberOfApprentices.Equals(command.NumberOfApprentices) && ((CreateCourseDemandData)c.Data).Location.LocationPoint.GeoPoint.First() == command.Lat && ((CreateCourseDemandData)c.Data).Location.LocationPoint.GeoPoint.Last() == command.Lon && ((CreateCourseDemandData)c.Data).Location.Name.Equals(command.LocationName) && ((CreateCourseDemandData)c.Data).Course.Title.Equals(command.CourseTitle) && ((CreateCourseDemandData)c.Data).Course.Level.Equals(command.CourseLevel) && ((CreateCourseDemandData)c.Data).Course.Id.Equals(command.CourseId) && ((CreateCourseDemandData)c.Data).Course.Route.Equals(command.CourseRoute) && ((CreateCourseDemandData)c.Data).StopSharingUrl.Equals(command.StopSharingUrl) && ((CreateCourseDemandData)c.Data).StartSharingUrl.Equals(command.StartSharingUrl) && ((CreateCourseDemandData)c.Data).ExpiredCourseDemandId.Equals(command.ExpiredCourseDemandId) && ((CreateCourseDemandData)c.Data).EntryPoint.Equals(command.EntryPoint) ))) .ReturnsAsync(apiResponse); SendEmailCommand actualEmail = null; mockNotificationService .Setup(service => service.Send(It.IsAny <SendEmailCommand>())) .Callback((SendEmailCommand args) => actualEmail = args) .Returns(Task.CompletedTask); var expectedEmail = new VerifyEmployerDemandEmail( command.ContactEmailAddress, command.OrganisationName, command.CourseTitle, command.CourseLevel, command.ConfirmationLink); //Act var actual = await handler.Handle(command, CancellationToken.None); //Assert actual.Should().Be(apiResponse.Body.Id); actualEmail.Tokens.Should().BeEquivalentTo(expectedEmail.Tokens); actualEmail.RecipientsAddress.Should().BeEquivalentTo(expectedEmail.RecipientAddress); actualEmail.TemplateId.Should().BeEquivalentTo(expectedEmail.TemplateId); }
public async Task Then_The_Api_Is_Called_And_Email_Not_Sent_If_ResponseCode_Is_Not_Created( RegisterDemandCommand command, PostEmployerCourseDemand responseBody, [Frozen] Mock <IEmployerDemandApiClient <EmployerDemandApiConfiguration> > apiClient, [Frozen] Mock <INotificationService> mockNotificationService, RegisterDemandCommandHandler handler) { //Arrange var apiResponse = new ApiResponse <PostEmployerCourseDemand>(responseBody, HttpStatusCode.Accepted, ""); apiClient.Setup(x => x.PostWithResponseCode <PostEmployerCourseDemand>(It.IsAny <PostCreateCourseDemandRequest>( ))) .ReturnsAsync(apiResponse); //Act var actual = await handler.Handle(command, CancellationToken.None); //Assert actual.Should().Be(apiResponse.Body.Id); mockNotificationService.Verify(x => x.Send(It.IsAny <SendEmailCommand>()), Times.Never); }
public async Task And_Demand_Not_Found_At_Api_Then_Return_Null_EmployerDemand( VerifyEmployerDemandCommand command, PostEmployerCourseDemand verifyEmailResponse, [Frozen] Mock <IEmployerDemandApiClient <EmployerDemandApiConfiguration> > apiClient, [Frozen] Mock <INotificationService> notificationService, VerifyEmployerDemandCommandHandler handler) { //Arrange apiClient .Setup(x => x.Get <GetEmployerDemandResponse>( It.Is <GetEmployerDemandRequest>(c => c.GetUrl.Contains($"demand/{command.Id}")))) .ReturnsAsync((GetEmployerDemandResponse)null); //Act var actual = await handler.Handle(command, CancellationToken.None); //Assert apiClient.Verify(client => client.PatchWithResponseCode( It.IsAny <PatchCourseDemandRequest>()), Times.Never); notificationService.Verify(service => service.Send(It.IsAny <SendEmailCommand>()), Times.Never); actual.EmployerDemand.Should().BeNull(); }