public async Task GivenRequestWithoutAssetRegisterVersion_ThenCallsAssetRegisterVersionSearcher_WithCorrectParams() { //arrange _mockUseCase.Setup(s => s.ExecuteAsync(It.IsAny <SearchAssetRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new SearchAssetResponse()); _mockAssetRegisterVersionSearcher .Setup(s => s.Search(It.IsAny <PagedQuery>(), It.IsAny <CancellationToken>())).ReturnsAsync( new PagedResults <IAssetRegisterVersion> { Results = new List <IAssetRegisterVersion> { new AssetRegisterVersion { Id = 10 } }, TotalCount = 1, NumberOfPages = 1 }); var request = new SearchAssetApiRequest { Address = "test", Page = 1, PageSize = 25 }; //act await _classUnderTest.Get(request); //assert _mockAssetRegisterVersionSearcher.Verify(v => v.Search(It.Is <PagedQuery>(i => i.Page.Equals(1) && i.PageSize.Equals(1)), It.IsAny <CancellationToken>())); }
public async Task GivenValidRequestWithAcceptTextCsvHeader_ThenReturnsListOfAssetOutputModel() { //arrange var assetOutputModel = new AssetOutputModel(TestData.Domain.GenerateAsset()); assetOutputModel.Id = Faker.GlobalUniqueIndex; assetOutputModel.SchemeId = Faker.GlobalUniqueIndex + 1; _mockUseCase.Setup(s => s.ExecuteAsync(It.IsAny <SearchAssetRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new SearchAssetResponse { Assets = new List <AssetOutputModel> { assetOutputModel } }); _classUnderTest.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() }; _classUnderTest.ControllerContext.HttpContext.Request.Headers.Add( new KeyValuePair <string, StringValues>("accept", "text/csv")); var request = new SearchAssetApiRequest { SchemeId = assetOutputModel.SchemeId, AssetRegisterVersionId = 1, }; //act var response = await _classUnderTest.Get(request).ConfigureAwait(false); //assert response.Should().NotBeNull(); var result = response as ObjectResult; result.Should().NotBeNull(); result.Value.Should().BeOfType <List <AssetOutputModel> >(); }
public async Task GivenValidRequest_ThenReturnsGetAssetResponse() { //arrange _mockUseCase.Setup(s => s.ExecuteAsync(It.IsAny <SearchAssetRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new SearchAssetResponse()); var request = new SearchAssetApiRequest(); //act var response = await _classUnderTest.Get(request); //assert response.Should().NotBeNull(); }
public void GivenValidRequest_ThenIsValid(int?schemeId, string address, int?page, int?pageSize, string region, string developer) { SearchAssetApiRequest apiRequest = new SearchAssetApiRequest { SchemeId = schemeId, Address = address, Page = page, PageSize = pageSize, Region = region, Developer = developer }; apiRequest.IsValid().Should().BeTrue(); }
public void GivenInvalidRequest_ThenIsInvalid(int?schemeId, string address, int?page, int?pageSize, string region) { SearchAssetApiRequest apiRequest = new SearchAssetApiRequest { SchemeId = schemeId, Address = address, Page = page, PageSize = pageSize, Region = region }; apiRequest.IsValid().Should().BeFalse(); }
private async Task <int?> GetLatestAssetRegisterVersionIdIfNull(SearchAssetApiRequest request) { int?assetRegisterVersionId = null; if (request.AssetRegisterVersionId.HasValue) { assetRegisterVersionId = request.AssetRegisterVersionId; } else { var latestAssetRegister = await _assetRegisterVersionSearcher.Search(new PagedQuery { Page = 1, PageSize = 1 }, CancellationToken.None).ConfigureAwait(false); assetRegisterVersionId = latestAssetRegister?.Results?.ElementAtOrDefault(0)?.Id; } return(assetRegisterVersionId); }
public async Task <IActionResult> Get([FromQuery] SearchAssetApiRequest request) { if (!request.IsValid()) { return(StatusCode(400)); } var assetRegisterVersionId = await GetLatestAssetRegisterVersionIdIfNull(request); var searchAssetUseCaseRequest = new SearchAssetRequest { SchemeId = request.SchemeId, Address = request.Address, Page = request.Page, PageSize = request.PageSize, AssetRegisterVersionId = assetRegisterVersionId, }; SearchAssetResponse result = await _useCase .ExecuteAsync(searchAssetUseCaseRequest, this.GetCancellationToken()).ConfigureAwait(false); return(this.StandardiseResponse <SearchAssetResponse, AssetOutputModel>(result)); }