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();
        }
예제 #6
0
        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);
        }
예제 #7
0
        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));
        }