示例#1
0
        public async Task<IActionResult> GetDatasetVersions(string datasetId, [FromQuery]int pageNumber, [FromQuery]int pageSize)
        {
            Guard.IsNullOrWhiteSpace(datasetId, nameof(datasetId));

            Dictionary<string, string[]> datasetIdFilter = new Dictionary<string, string[]>
                {{"datasetId", new[] {datasetId}}};

            SearchRequestViewModel searchRequest = new SearchRequestViewModel()
            {
                PageNumber = pageNumber,
                PageSize = pageSize,
                Filters = datasetIdFilter,
                IncludeFacets = true
            };

            DatasetVersionSearchResultViewModel searchResult =
                await _datasetSearchService.PerformSearchDatasetVersion(searchRequest);
            
            if (searchResult != null)
            {
                return new OkObjectResult(searchResult);
            }
            else
            {
                return new InternalServerErrorResult(
                    "There was an error retrieving data sources from the Search Version Index.");
            }
        }
示例#2
0
        public async Task PerformSearchDatasetVersion_GivenClientReturnsResult_ShouldReturnCorrectlyMappedResult()
        {
            // Arrange
            IDatasetsApiClient mockDatasetsApiClient = Substitute.For <IDatasetsApiClient>();
            ILogger            mockLogger            = Substitute.For <ILogger>();
            IMapper            mockMapper            = MappingHelper.CreateFrontEndMapper();
            IFeatureToggle     featureToggle         = CreateFeatureToggle();

            IDatasetSearchService datasetSearchService = new DatasetSearchService(mockDatasetsApiClient, mockMapper, mockLogger, featureToggle);

            PagedResult <DatasetVersionSearchResultModel> itemResult = GeneratedPagedResultsDatasetVersionSearchResultModel(50);

            itemResult.PageNumber = 2;
            itemResult.PageSize   = 50;
            itemResult.TotalItems = 175;

            mockDatasetsApiClient
            .FindDatasetsVersions(Arg.Any <SearchFilterRequest>())
            .Returns(itemResult);

            // Act
            DatasetVersionSearchResultViewModel datasetVersionSearchResultViewModel = await datasetSearchService.PerformSearchDatasetVersion(new SearchRequestViewModel());

            // Assert
            datasetVersionSearchResultViewModel.Should().NotBeNull();
            datasetVersionSearchResultViewModel.Results.Count().Should().Be(50);
            datasetVersionSearchResultViewModel.TotalResults.Should().Be(175);
            datasetVersionSearchResultViewModel.CurrentPage.Should().Be(2);
            datasetVersionSearchResultViewModel.PageSize.Should().Be(50);
        }
示例#3
0
        public async Task <DatasetVersionSearchResultViewModel> PerformSearchDatasetVersion(SearchRequestViewModel searchRequest)
        {
            int pageNumber = Math.Max(1, searchRequest.PageNumber.GetValueOrDefault(1));
            int pageSize   = searchRequest.PageSize.GetValueOrDefault(50);

            SearchModel requestOptions = new SearchModel
            {
                PageNumber    = pageNumber,
                Top           = pageSize,
                SearchTerm    = searchRequest.SearchTerm,
                IncludeFacets = searchRequest.IncludeFacets,
                Filters       = searchRequest.Filters,
                SearchMode    = searchRequest.SearchMode.AsMatchingEnum <SearchMode>()
            };

            ApiResponse <SearchResults <DatasetVersionIndex> > searchRequestResult = await _datasetsClient.SearchDatasetVersion(requestOptions);

            if (searchRequestResult == null)
            {
                return(null);
            }

            SearchResults <DatasetVersionIndex> searchResults = searchRequestResult.Content;

            DatasetVersionSearchResultViewModel datasetVersionSearchResultViewModel =
                new DatasetVersionSearchResultViewModel(searchResults.Results, searchResults.TotalCount, pageNumber, (int)Math.Ceiling(searchResults.TotalCount / (double)pageSize), pageSize);

            return(datasetVersionSearchResultViewModel);
        }
        public async Task <IActionResult> OnGetAsync(string datasetId, int pageNumber = 1, int pageSize = 20)
        {
            Guard.IsNullOrWhiteSpace(datasetId, nameof(datasetId));

            DatasetId = datasetId;

            Dictionary <string, string[]> datasetIdFilter = new Dictionary <string, string[]> {
                { "datasetId", new[] { datasetId } }
            };

            SearchRequestViewModel searchRequest = new SearchRequestViewModel()
            {
                PageNumber    = pageNumber,
                PageSize      = pageSize,
                Filters       = datasetIdFilter,
                IncludeFacets = false
            };

            SearchRequestViewModel searchRequestForCurrent = new SearchRequestViewModel()
            {
                PageNumber    = 1,
                PageSize      = 1,
                Filters       = datasetIdFilter,
                IncludeFacets = false,
            };

            DatasetVersionSearchResultViewModel searchResult = await _searchService.PerformSearchDatasetVersion(searchRequest);

            DatasetVersionSearchResultViewModel currentSearchResult = (await _searchService.PerformSearchDatasetVersion(searchRequestForCurrent));

            if (searchResult?.Results?.AnyWithNullCheck() == true && currentSearchResult?.Results?.AnyWithNullCheck() == true)
            {
                Current = currentSearchResult.Results.First();

                DatasetSearchResultViewModel = searchResult;

                return(Page());
            }
            else
            {
                return(new InternalServerErrorResult("There was an error retrieving data sources from the Search Version Index."));
            }
        }
示例#5
0
        public async Task PerformSearchDatasetVersion_GivenClientReturnsEmptyResult_ShouldReturnCorrectlyMappedResult()
        {
            // Arrange
            IDatasetsApiClient mockDatasetsApiClient = Substitute.For <IDatasetsApiClient>();
            ILogger            mockLogger            = Substitute.For <ILogger>();
            IMapper            mockMapper            = MappingHelper.CreateFrontEndMapper();

            IDatasetSearchService datasetSearchService = new DatasetSearchService(mockDatasetsApiClient, mockMapper, mockLogger);

            mockDatasetsApiClient
            .SearchDatasets(Arg.Any <SearchModel>())
            .Returns((ApiResponse <SearchResults <DatasetIndex> >)null);

            // Act
            DatasetVersionSearchResultViewModel datasetVersionSearchResultViewModel = await datasetSearchService.PerformSearchDatasetVersion(new SearchRequestViewModel());

            // Assert
            datasetVersionSearchResultViewModel.Should().BeNull();
        }
示例#6
0
        public async Task PerformSearchDatasetVersion_GivenIsSearchModeAllEnabledFeatureToggleIdTurnedOn_SearchModeIsAll()
        {
            // Arrange
            IDatasetsApiClient mockDatasetsApiClient = Substitute.For <IDatasetsApiClient>();
            ILogger            mockLogger            = Substitute.For <ILogger>();
            IMapper            mockMapper            = MappingHelper.CreateFrontEndMapper();
            IFeatureToggle     featureToggle         = CreateFeatureToggle(true);

            IDatasetSearchService datasetSearchService = new DatasetSearchService(mockDatasetsApiClient, mockMapper, mockLogger, featureToggle);

            // Act
            DatasetVersionSearchResultViewModel datasetVersionSearchResultViewModel = await datasetSearchService.PerformSearchDatasetVersion(new SearchRequestViewModel());

            // Assert
            await
            mockDatasetsApiClient
            .Received(1)
            .FindDatasetsVersions(Arg.Is <SearchFilterRequest>(m => m.SearchMode == SearchMode.All));
        }
示例#7
0
        public async Task PerformSearchDatasetVersion_GivenClientReturnsEmptyResult_ShouldReturnCorrectlyMappedResult()
        {
            // Arrange
            IDatasetsApiClient mockDatasetsApiClient = Substitute.For <IDatasetsApiClient>();
            ILogger            mockLogger            = Substitute.For <ILogger>();
            IMapper            mockMapper            = MappingHelper.CreateFrontEndMapper();
            IFeatureToggle     featureToggle         = CreateFeatureToggle();

            IDatasetSearchService datasetSearchService = new DatasetSearchService(mockDatasetsApiClient, mockMapper, mockLogger, featureToggle);

            mockDatasetsApiClient
            .FindDatasetsVersions(Arg.Any <SearchFilterRequest>())
            .Returns((PagedResult <DatasetVersionSearchResultModel>)null);

            // Act
            DatasetVersionSearchResultViewModel datasetVersionSearchResultViewModel = await datasetSearchService.PerformSearchDatasetVersion(new SearchRequestViewModel());

            // Assert
            datasetVersionSearchResultViewModel.Should().BeNull();
        }
示例#8
0
        public async Task <DatasetVersionSearchResultViewModel> PerformSearchDatasetVersion(SearchRequestViewModel searchRequest)
        {
            SearchFilterRequest requestOptions = new SearchFilterRequest()
            {
                Page          = searchRequest.PageNumber ?? 1,
                PageSize      = searchRequest.PageSize ?? 20,
                SearchTerm    = searchRequest.SearchTerm,
                IncludeFacets = searchRequest.IncludeFacets,
                Filters       = searchRequest.Filters,
                SearchMode    = _featureToggle.IsSearchModeAllEnabled() ? SearchMode.All : SearchMode.Any
            };

            PagedResult <DatasetVersionSearchResultModel> pagedResult = await _datasetsClient.FindDatasetsVersions(requestOptions);

            if (pagedResult == null)
            {
                return(null);
            }

            DatasetVersionSearchResultViewModel datasetVersionSearchResultViewModel =
                new DatasetVersionSearchResultViewModel(pagedResult.Items, pagedResult.TotalItems, pagedResult.PageNumber, pagedResult.TotalPages, pagedResult.PageSize);

            return(datasetVersionSearchResultViewModel);
        }