public static async Task GetBuyerOrganisationByOdsCode_WithValidResponse_Returns_BuyerOrganisation() { var context = OdsRepositoryTestContext.Setup(); using var httpTest = new HttpTest(); httpTest.RespondWith(status: 200, body: ValidResponseBody); var expected = new OdsOrganisation { OdsCode = OdsCode, OrganisationName = "SOUTH EAST - H&J COMMISSIONING HUB", PrimaryRoleId = "RO98", Address = new Address { Line1 = "C/O NHS ENGLAND", Line2 = "1W09, 1ST FLOOR, QUARRY HOUSE", Line3 = "QUARRY HILL", Town = "LEEDS", Postcode = "LS2 7UA", Country = "ENGLAND", }, IsActive = true, IsBuyerOrganisation = true, }; var actual = await context.OdsRepository.GetBuyerOrganisationByOdsCodeAsync(OdsCode); actual.Should().BeOfType <OdsOrganisation>(); actual.Should().NotBeNull(); actual.Should().BeEquivalentTo(expected); }
public static void GetBuyerOrganisationByOdsCode_WithInternalServerErrorResponseFromOdsApi_Throws() { var context = OdsRepositoryTestContext.Setup(); using var httpTest = new HttpTest(); httpTest.RespondWith(status: 500); Assert.ThrowsAsync <FlurlHttpException>(async() => await context.OdsRepository.GetBuyerOrganisationByOdsCodeAsync("invalid")); }
public static void GetBuyerOrganisationByOdsCode_InvalidOdsCode_ThrowsException(string invalid) { var context = OdsRepositoryTestContext.Setup(); using var httpTest = new HttpTest(); httpTest.RespondWith(status: 500); Assert.ThrowsAsync <ArgumentException>( async() => await context.OdsRepository.GetBuyerOrganisationByOdsCodeAsync(invalid)) .Message.Should().Be($"A valid odsCode is required for this call"); }
public async Task GetBuyerOrganisationByOdsCode_WithNotFoundResponseFromOdsApi_Returns_Null() { var context = OdsRepositoryTestContext.Setup(); using var httpTest = new HttpTest(); httpTest.RespondWithJson(new { ErrorCode = 404, ErrorText = "Not Found." }, 404); var result = await context.OdsRepository.GetBuyerOrganisationByOdsCodeAsync(OdsCode); result.Should().BeNull(); }
public async Task GetBuyerOrganisationByOdsCode_CallsOdsApi_Once() { var context = OdsRepositoryTestContext.Setup(); using var httpTest = new HttpTest(); httpTest.RespondWith(status: 200, body: ValidResponseBody); await context.OdsRepository.GetBuyerOrganisationByOdsCodeAsync(OdsCode); httpTest.ShouldHaveCalled($"{context.OdsSettings.ApiBaseUrl}/organisations/{OdsCode}") .WithVerb(HttpMethod.Get) .Times(1); }
public static async Task GetBuyerOrganisationByOdsCode_WithNotFoundResponseFromOdsApi_Returns_Null() { const string odsCode = "ods-code-839"; var context = OdsRepositoryTestContext.Setup(); var url = $"{context.OdsSettings.ApiBaseUrl}/organisations/{odsCode}"; var cachingService = new CachingService(); cachingService.CacheProvider.Remove(odsCode); var repository = new OdsRepository(context.OdsSettings, cachingService); using var httpTest = new HttpTest(); httpTest .ForCallsTo(url) .RespondWithJson(new { ErrorCode = 404, ErrorText = "Not Found." }, 404); var result = await repository.GetBuyerOrganisationByOdsCodeAsync(odsCode); httpTest.ShouldHaveCalled(url) .WithVerb(HttpMethod.Get) .Times(1); result.Should().BeNull(); }