public async Task GivenValidInput_WhenGatewayReturnsResults_ThenUseCaseReturnsCorrectlyMappedResponse(int uniqueRecords, decimal moneyPaidOut, decimal assetValue, decimal movementInAssetValue) { _mockGateway.Setup(s => s.Aggregate(It.IsAny <IAssetSearchQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new AssetAggregation { UniqueRecords = uniqueRecords, MoneyPaidOut = moneyPaidOut, AssetValue = assetValue, MovementInAssetValue = movementInAssetValue }); var request = new CalculateAssetAggregateRequest { AssetRegisterVersionId = 1, }; //act var response = await _classUnderTest.ExecuteAsync(request, CancellationToken.None); //assert response.Should().NotBeNull(); response.AssetAggregates.Should().NotBeNull(); response.AssetAggregates.UniqueRecords.Should().Be(uniqueRecords); response.AssetAggregates.MoneyPaidOut.Should().Be(moneyPaidOut); response.AssetAggregates.AssetValue.Should().Be(assetValue); response.AssetAggregates.MovementInAssetValue.Should().Be(movementInAssetValue); }
public async Task GivenValidRequest_ThenReturnsAssetAggregationResponse(int uniqueRecords, decimal?agencyEquityValue, decimal?agencyFairValue, decimal?movementInFairValue) { //arrange var assetAggregatesOutputModel = new AssetAggregatesOutputModel { UniqueRecords = uniqueRecords, MoneyPaidOut = agencyEquityValue, AssetValue = agencyFairValue, MovementInAssetValue = movementInFairValue }; _mockUseCase.Setup(s => s.ExecuteAsync(It.IsAny <CalculateAssetAggregateRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new CalculateAssetAggregateResponse { AssetAggregates = assetAggregatesOutputModel }); var request = new CalculateAssetAggregateRequest(); //act var response = await _classUnderTest.Get(request); //assert response.Should().NotBeNull(); var result = response as ObjectResult; result.Should().NotBeNull(); result.Value.Should().BeOfType <ResponseData <CalculateAssetAggregateResponse> >(); var apiResponse = result.Value as ResponseData <CalculateAssetAggregateResponse>; response.Should().NotBeNull(); apiResponse.Data.AssetAggregates.Should().BeEquivalentTo(assetAggregatesOutputModel); }
public async Task GivenRequestWithoutAssetRegisterVersion_ThenCallsAssetRegisterVersionSearcher_WithCorrectParams() { //arrange _mockUseCase.Setup(s => s.ExecuteAsync(It.IsAny <CalculateAssetAggregateRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new CalculateAssetAggregateResponse()); _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 CalculateAssetAggregateRequest { Address = "test", }; //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 <IActionResult> Get([FromQuery] CalculateAssetAggregateRequest request) { request.AssetRegisterVersionId = await GetLatestAssetRegisterVersionIdIfNull(request).ConfigureAwait(false); var result = await _useCase.ExecuteAsync(request, this.GetCancellationToken()).ConfigureAwait(false); return(this.StandardiseResponse <CalculateAssetAggregateResponse, AssetAggregatesOutputModel>(result)); }
private async Task <CalculateAssetAggregateResponse> CalculateAggregatesForSearchCriteria(int?schemeId, string address, int assetRegisterVersionId) { var searchForAsset = new CalculateAssetAggregateRequest { SchemeId = schemeId, Address = address, AssetRegisterVersionId = assetRegisterVersionId }; var useCaseResponse = await _classUnderTest.ExecuteAsync(searchForAsset, CancellationToken.None).ConfigureAwait(false); return(useCaseResponse); }
public async Task <CalculateAssetAggregateResponse> ExecuteAsync(CalculateAssetAggregateRequest requests, CancellationToken cancellationToken) { var assetSearchQuery = new AssetSearchQuery { SchemeId = requests?.SchemeId, Address = requests?.Address, AssetRegisterVersionId = requests?.AssetRegisterVersionId }; var result = await _assetAggregator.Aggregate(assetSearchQuery, cancellationToken).ConfigureAwait(false); var response = new CalculateAssetAggregateResponse { AssetAggregates = new AssetAggregatesOutputModel(result) }; return(response); }
public async Task GivenValidRequestWithAcceptTextCsvHeader_ThenReturnsListOfAssetAggregatesOutputModel(int uniqueRecords, decimal?agencyEquityValue, decimal?agencyFairValue, decimal?movementInFairValue) { //arrange var assetAggregatesOutputModel = new AssetAggregatesOutputModel { UniqueRecords = uniqueRecords, MoneyPaidOut = agencyEquityValue, AssetValue = agencyFairValue, MovementInAssetValue = movementInFairValue }; _mockUseCase.Setup(s => s.ExecuteAsync(It.Is <CalculateAssetAggregateRequest>(a => a.Address.Equals("test")), It.IsAny <CancellationToken>())) .ReturnsAsync(new CalculateAssetAggregateResponse { AssetAggregates = assetAggregatesOutputModel }); _classUnderTest.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() }; _classUnderTest.ControllerContext.HttpContext.Request.Headers.Add(new KeyValuePair <string, StringValues>("accept", "text/csv")); var request = new CalculateAssetAggregateRequest { Address = "test" }; //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 <AssetAggregatesOutputModel> >(); var list = result.Value as List <AssetAggregatesOutputModel>; list.Should().NotBeNullOrEmpty(); list.ElementAtOrDefault(0).Should().BeEquivalentTo(assetAggregatesOutputModel); }
private async Task <int?> GetLatestAssetRegisterVersionIdIfNull(CalculateAssetAggregateRequest 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); }