Exemplo n.º 1
0
        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);
        }
Exemplo n.º 4
0
        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();
        }