public async Task Handle_CallsInnerApi_ReturnsValidResponse(
            GetStandardResponse apiResponseStandard,
            GetProviderCourseResponse apiResponseProviderCourse,
            List <GetProviderCourseLocationsResponse> apiResponseProviderCourseLocation,
            GetProviderCourseQuery query,
            [Frozen] Mock <ICoursesApiClient <CoursesApiConfiguration> > apiClientMockCourse,
            [Frozen] Mock <IRoatpCourseManagementApiClient <RoatpV2ApiConfiguration> > apiClientMock,
            GetProviderCourseQueryHandler sut)
        {
            apiClientMockCourse.Setup(c => c.GetWithResponseCode <GetStandardResponse>(It.Is <GetStandardRequest>(c =>
                                                                                                                  c.GetUrl.Equals(new GetStandardRequest(query.LarsCode).GetUrl)))).
            ReturnsAsync(new ApiResponse <GetStandardResponse>(apiResponseStandard, HttpStatusCode.OK, ""));

            apiClientMock.Setup(c => c.GetWithResponseCode <GetProviderCourseResponse>(It.Is <GetProviderCourseRequest>(c =>
                                                                                                                        c.GetUrl.Equals(new GetProviderCourseRequest(query.Ukprn, query.LarsCode).GetUrl)))).
            ReturnsAsync(new ApiResponse <GetProviderCourseResponse>(apiResponseProviderCourse, HttpStatusCode.OK, ""));

            apiClientMock.Setup(c => c.GetWithResponseCode <List <GetProviderCourseLocationsResponse> >(It.Is <GetProviderCourseLocationsRequest>(c =>
                                                                                                                                                  c.GetUrl.Equals(new GetProviderCourseLocationsRequest(query.Ukprn, query.LarsCode).GetUrl)))).
            ReturnsAsync(new ApiResponse <List <GetProviderCourseLocationsResponse> >(apiResponseProviderCourseLocation, HttpStatusCode.OK, ""));

            var result = await sut.Handle(query, new CancellationToken());

            result.Should().NotBeNull();
        }
        public void Handle_CallsInnerApi_ReturnsExceptionWhenStandardGetsInternalServerError(
            GetProviderCourseQuery query,
            [Frozen] Mock <ICoursesApiClient <CoursesApiConfiguration> > apiClientMockCourse,
            GetProviderCourseQueryHandler sut)
        {
            apiClientMockCourse.Setup(c => c.GetWithResponseCode <GetStandardResponse>(It.Is <GetStandardRequest>(c =>
                                                                                                                  c.GetUrl.Equals(new GetStandardRequest(query.LarsCode).GetUrl))))
            .ReturnsAsync(new ApiResponse <GetStandardResponse>(new GetStandardResponse(), HttpStatusCode.InternalServerError, "Error"));

            Assert.ThrowsAsync <HttpRequestContentException>(() => sut.Handle(query, new CancellationToken()));
        }
        public void Handle_CallsInnerApi_ReturnsExceptionWhenProviderCourseGetsBadRequest(
            GetStandardResponse apiResponseStandard,
            GetProviderCourseQuery query,
            [Frozen] Mock <ICoursesApiClient <CoursesApiConfiguration> > apiClientMockCourse,
            [Frozen] Mock <IRoatpCourseManagementApiClient <RoatpV2ApiConfiguration> > apiClientMock,
            GetProviderCourseQueryHandler sut)
        {
            apiClientMockCourse.Setup(c => c.GetWithResponseCode <GetStandardResponse>(It.Is <GetStandardRequest>(c =>
                                                                                                                  c.GetUrl.Equals(new GetStandardRequest(query.LarsCode).GetUrl)))).
            ReturnsAsync(new ApiResponse <GetStandardResponse>(apiResponseStandard, HttpStatusCode.OK, ""));

            apiClientMock.Setup(c => c.GetWithResponseCode <GetProviderCourseResponse>(It.Is <GetProviderCourseRequest>(c =>
                                                                                                                        c.GetUrl.Equals(new GetProviderCourseRequest(query.Ukprn, query.LarsCode).GetUrl))))
            .ReturnsAsync(new ApiResponse <GetProviderCourseResponse>(new GetProviderCourseResponse(), HttpStatusCode.BadRequest, "Error"));

            Assert.ThrowsAsync <HttpRequestContentException>(() => sut.Handle(query, new CancellationToken()));
        }