Beispiel #1
0
        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);
        }
Beispiel #6
0
        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);
        }