public async Task CourseGetAsyncReturnsHttpRequestExceptionWhenApiReturnsNotSuccessful() { // Arrange var courseGetRequest = new CourseGetRequest { CourseId = courseId, RunId = courseRunId }; var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.BadRequest, Content = new StringContent("{}") }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); var auditService = A.Fake <IAuditService>(); var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://SomeDummyUrl") }; var findACourseClient = new FindACourseClient(httpClient, defaultSettings, auditService, defaultLogger); // Act await Assert.ThrowsAsync <HttpRequestException>(async() => await findACourseClient.CourseGetAsync(courseGetRequest).ConfigureAwait(false)).ConfigureAwait(false); // Assert httpResponse.Dispose(); httpClient.Dispose(); fakeHttpMessageHandler.Dispose(); }
public async Task CourseSearchAsyncReturnsBlankResultsWhenApiReturnsBadRequest() { // Arrange var courseSearchRequest = new CourseSearchRequest { SubjectKeyword = "Somekeyword" }; var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.BadRequest, Content = new StringContent("{}") }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); var auditService = A.Fake <IAuditService>(); var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://SomeDummyUrl") }; var findACourseClient = new FindACourseClient(httpClient, defaultSettings, auditService, defaultLogger); var result = await findACourseClient.CourseSearchAsync(courseSearchRequest).ConfigureAwait(false); // Assert Assert.NotNull(result); Assert.Empty(result.Results); httpResponse.Dispose(); httpClient.Dispose(); fakeHttpMessageHandler.Dispose(); }
public async Task CourseGetAsyncCatchesExceptionWhenApiReturnsNotSuccessful() { // Arrange var courseGetRequest = new CourseGetRequest { CourseId = courseId, RunId = courseRunId }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Throws <Exception>(); var auditService = A.Fake <IAuditService>(); using var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); using var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://SomeDummyUrl") }; var findACourseClient = new FindACourseClient(httpClient, defaultSettings, auditService, defaultLogger); // Act var result = await findACourseClient.CourseGetAsync(courseGetRequest).ConfigureAwait(false); // Assert Assert.Null(result); }
public async Task CourseSearchAsyncReturnsResponseObjectWhenApiCallIsSuccessful() { // Arrange var courseSearchRequest = new CourseSearchRequest { SubjectKeyword = "Somekeyword" }; var expectedResponse = new CourseSearchResponse { Results = new List <Result> { new Result { CourseId = courseId, CourseRunId = courseRunId, CourseName = "CourseName", }, }, }; var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(expectedResponse)) }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); var auditService = A.Fake <IAuditService>(); var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://SomeDummyUrl") }; var findACourseClient = new FindACourseClient(httpClient, defaultSettings, auditService, defaultLogger); // Act var result = await findACourseClient.CourseSearchAsync(courseSearchRequest).ConfigureAwait(false); // Assert Assert.NotNull(result); Assert.Equal(expectedResponse.Results.FirstOrDefault()?.CourseName, result.Results?.FirstOrDefault()?.CourseName); Assert.Equal(expectedResponse.Results?.FirstOrDefault()?.CourseRunId, result.Results?.FirstOrDefault()?.CourseRunId); Assert.Equal(expectedResponse.Results?.FirstOrDefault()?.CourseId, result.Results?.FirstOrDefault()?.CourseId); httpResponse.Dispose(); httpClient.Dispose(); fakeHttpMessageHandler.Dispose(); }
public async Task TLevelGetAsyncReturnsResponseObjectWhenApiCallIsSuccessful() { // Arrange var expectedResponse = new TLevelDetailResponse { TLevelId = tLevelId, Qualification = new TLevelQualification() { TLevelName = "testTLevel" }, Provider = new TLevelProvider() { ProviderName = "testProvider" }, }; var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(expectedResponse)) }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); var auditService = A.Fake <IAuditService>(); var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://SomeDummyUrl") }; var findACourseClient = new FindACourseClient(httpClient, defaultSettings, auditService, defaultLogger); // Act var result = await findACourseClient.TLevelGetAsync(tLevelId.ToString()).ConfigureAwait(false); // Assert Assert.NotNull(result); Assert.Equal(expectedResponse.Qualification.TLevelName, result.Qualification.TLevelName); Assert.Equal(expectedResponse.Provider.ProviderName, result.Provider.ProviderName); Assert.Equal(expectedResponse.TLevelId, result.TLevelId); httpResponse.Dispose(); httpClient.Dispose(); fakeHttpMessageHandler.Dispose(); }