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 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);
        }