示例#1
0
        public void SetFilters_Returns_Empty_String_For_No_Filter()
        {
            var searchModel = new LearningAimsSearchModel();

            var oDataQuery = string.Empty;

            var frameworkFilterMock = new Mock <IFrameworkODataFilter>();
            var frameworkFilters    = new List <IFrameworkODataFilter> {
                frameworkFilterMock.Object
            };

            var standardsFilterMock = new Mock <IStandardODataFilter>();
            var standardsFilters    = new List <IStandardODataFilter> {
                standardsFilterMock.Object
            };

            var filterMock = new Mock <ILearningAimsODataFilter>();

            filterMock
            .Setup(m => m.ApplyFilter(searchModel))
            .Returns(oDataQuery);

            var oDataLevelFilters = new List <ILearningAimsODataFilter>
            {
                filterMock.Object
            };

            var parameters = new SearchParameters();

            var queryService = new ODataQueryService(oDataLevelFilters, frameworkFilters, standardsFilters);

            queryService.SetLearningAimFilters(searchModel, parameters);

            parameters.Filter.Should().Be(oDataQuery);
        }
        public LearningAimsSearchModel GetLearningAimsSearchModel(BasicSearchModel basicSearchModel)
        {
            var searchModel = new LearningAimsSearchModel();

            if (!string.IsNullOrEmpty(basicSearchModel.SearchTerm))
            {
                searchModel.SearchTerm = basicSearchModel.SearchTerm;
            }

            if (!string.IsNullOrEmpty(basicSearchModel.Level))
            {
                searchModel.Levels.Add(basicSearchModel.Level);
            }

            if (!string.IsNullOrEmpty(basicSearchModel.AwardingBody))
            {
                searchModel.AwardingBodies.Add(basicSearchModel.AwardingBody);
            }

            if (!string.IsNullOrEmpty(basicSearchModel.TeachingYear))
            {
                searchModel.TeachingYears.Add(basicSearchModel.TeachingYear);
            }

            return(searchModel);
        }
示例#3
0
        public async Task GetLarsLearningDeliveries_Returns_Valid_Aims()
        {
            var learnAimRef      = "12345678";
            var azureLearningAim = new LearningAimModel
            {
                LearnAimRef = learnAimRef
            };
            var apiLearningAim = new Models.LearningAimModel
            {
                LearnAimRef = learnAimRef
            };

            var searchModel = new LearningAimsSearchModel
            {
                SearchTerm = learnAimRef
            };

            var searchResult = new DocumentSearchResult <LearningAimModel>(
                new List <SearchResult <LearningAimModel> >
            {
                new SearchResult <LearningAimModel>(azureLearningAim)
            },
                1,
                0,
                null,
                SearchContinuationToken.CreateTestToken("foo"));

            var mapperMock = new Mock <IMapper <LearningAimModel, Models.LearningAimModel> >();

            mapperMock.Setup(m => m.Map(azureLearningAim)).Returns(apiLearningAim);

            var indexServiceMock = new Mock <ILearningDeliveryIndexService>();

            var azureServiceMock = new Mock <IAzureService>();

            azureServiceMock
            .Setup(m => m.SearchIndexAsync <LearningAimModel>(indexServiceMock.Object, learnAimRef, It.IsAny <SearchParameters>()))
            .ReturnsAsync(searchResult);

            var queryServiceMock = new Mock <IODataQueryService>();
            var searchTermFormattingServiceMock = new Mock <ISearchTermFormattingService>();

            searchTermFormattingServiceMock
            .Setup(f => f.FormatSearchTerm(learnAimRef))
            .Returns(learnAimRef);

            var service = new AzureLearningAimsService(
                mapperMock.Object,
                indexServiceMock.Object,
                queryServiceMock.Object,
                azureServiceMock.Object,
                searchTermFormattingServiceMock.Object);

            var result = (await service.GetLarsLearningDeliveries(searchModel)).ToList();

            azureServiceMock.Verify(m => m.SearchIndexAsync <LearningAimModel>(indexServiceMock.Object, learnAimRef, It.IsAny <SearchParameters>()), Times.Once);

            result.Should().HaveCount(1);
            result.Single().Should().BeSameAs(apiLearningAim);
        }
示例#4
0
        public string ApplyFilter(LearningAimsSearchModel searchModel)
        {
            var searchFilter = searchModel.FundingStreams;

            if (!(searchFilter?.Any() ?? false) || searchFilter.All(string.IsNullOrWhiteSpace))
            {
                return(string.Empty);
            }

            var stringBuilder = new StringBuilder();

            stringBuilder.Append("(");
            foreach (var filter in searchFilter)
            {
                if (stringBuilder.Length > 1)
                {
                    stringBuilder.Append(" or ");
                }

                stringBuilder.AppendFormat(FilterODataString, filter.ToUpper(), searchModel.TeachingYears.FirstOrDefault());
            }

            stringBuilder.Append(")");

            return(stringBuilder.ToString());
        }
        public async Task GetLearningAims_CallsAzureSearchService_GetLarsLearningDeliveries()
        {
            var searchModel       = new LearningAimsSearchModel();
            var learningAimModels = new List <LearningAimModel>();

            var azureServiceMock = new Mock <IAzureLearningAimsService>();

            azureServiceMock
            .Setup(m => m.GetLarsLearningDeliveries(searchModel))
            .ReturnsAsync(learningAimModels);

            var searchCleaningServiceMock = new Mock <ISearchCleaningService>();

            searchCleaningServiceMock
            .Setup(m => m.EscapeSearchSpecialCharacters(It.IsAny <string>()))
            .Returns(string.Empty);

            searchCleaningServiceMock
            .Setup(m => m.EscapeFilterSpecialCharacters(It.IsAny <string>()))
            .Returns(string.Empty);

            var service = new LearningAimAzureService(azureServiceMock.Object, searchCleaningServiceMock.Object);
            var result  = await service.GetLearningAims(searchModel);

            azureServiceMock.Verify(m => m.GetLarsLearningDeliveries(searchModel), Times.Once);
            result.Should().AllBeEquivalentTo(learningAimModels);
        }
        public async Task <IEnumerable <LearningAimModel> > GetLearningAimsAsync(
            [FromBody] LearningAimsSearchModel searchParameters)
        {
            var aims = await _unitService.GetLearningAims(searchParameters);

            return(aims);
        }
示例#7
0
        public Task <IEnumerable <LearningAimModel> > GetLearningAims(LearningAimsSearchModel searchParameters)
        {
            searchParameters.SearchTerm     = _searchCleaningService.EscapeSearchSpecialCharacters(searchParameters.SearchTerm);
            searchParameters.FundingStreams = CleanFilter(searchParameters.FundingStreams);
            searchParameters.AwardingBodies = CleanFilter(searchParameters.AwardingBodies);
            searchParameters.Levels         = CleanFilter(searchParameters.Levels);

            return(_azureSearchService.GetLarsLearningDeliveries(searchParameters));
        }
示例#8
0
        public void SetFilters_With_Different_Filters_Returns_Valid_OData_Query()
        {
            var searchModel = new LearningAimsSearchModel
            {
                Levels = new List <string>
                {
                    "1"
                },
                AwardingBodies = new List <string>
                {
                    "Test"
                }
            };

            var levelOData        = $"(Level eq '{searchModel.Levels.Single()}')";
            var awardingBodyOData = $"(AwardingBodyCode eq '{searchModel.AwardingBodies.Single()}' or AwardingBodyName eq '{searchModel.AwardingBodies.Single()}')";
            var oDataQuery        = $"{levelOData} and {awardingBodyOData}";

            var frameworkFilterMock = new Mock <IFrameworkODataFilter>();
            var frameworkFilters    = new List <IFrameworkODataFilter> {
                frameworkFilterMock.Object
            };

            var standardsFilterMock = new Mock <IStandardODataFilter>();
            var standardsFilters    = new List <IStandardODataFilter> {
                standardsFilterMock.Object
            };

            var levelFilterMock = new Mock <ILearningAimsODataFilter>();

            levelFilterMock
            .Setup(m => m.ApplyFilter(searchModel))
            .Returns(levelOData);

            var awardingBodyFilterMock = new Mock <ILearningAimsODataFilter>();

            awardingBodyFilterMock
            .Setup(m => m.ApplyFilter(searchModel))
            .Returns(awardingBodyOData);

            var oDataLevelFilters = new List <ILearningAimsODataFilter>
            {
                levelFilterMock.Object,
                awardingBodyFilterMock.Object
            };

            var parameters = new SearchParameters();

            var queryService = new ODataQueryService(oDataLevelFilters, frameworkFilters, standardsFilters);

            queryService.SetLearningAimFilters(searchModel, parameters);

            parameters.Filter.Should().Be(oDataQuery);
        }
        public void ApplyFilter_Returns_Empty_String_For_No_Filter(string searchFilter)
        {
            var searchModel = new LearningAimsSearchModel
            {
                FundingStreams = new List <string>
                {
                    searchFilter
                }
            };
            var fundingStreamOData = string.Empty;

            var filter = new FundingStreamODataFilter();
            var result = filter.ApplyFilter(searchModel);

            result.Should().Be(fundingStreamOData);
        }
        public void ApplyFilter_Returns_Valid_OData()
        {
            var searchModel = new LearningAimsSearchModel
            {
                Levels = new List <string>
                {
                    "Test"
                }
            };
            var awardingBodyOData = $"(Level eq '{searchModel.Levels.Single()}')";

            var filter = new LevelODataFilter();
            var result = filter.ApplyFilter(searchModel);

            result.Should().Be(awardingBodyOData);
        }
示例#11
0
        public void ApplyFilter_Returns_Valid_OData()
        {
            var searchModel = new LearningAimsSearchModel
            {
                TeachingYears = new List <string>
                {
                    "1920"
                }
            };
            var oData = $"(AcademicYears/any(ay:ay/AcademicYear eq '{searchModel.TeachingYears.Single()}'))";

            var filter = new AcademicYearODataFilter();
            var result = filter.ApplyFilter(searchModel);

            result.Should().Be(oData);
        }
        public void ApplyFilter_Returns_Empty_String_For_No_Filter(string searchFilter)
        {
            var searchModel = new LearningAimsSearchModel
            {
                Levels = new List <string>
                {
                    searchFilter
                }
            };
            var awardingBodyOData = string.Empty;

            var filter = new LevelODataFilter();
            var result = filter.ApplyFilter(searchModel);

            result.Should().Be(awardingBodyOData);
        }
示例#13
0
        public void ApplyFilter_Returns_Empty_String_For_No_Filter(string searchFilter)
        {
            var searchModel = new LearningAimsSearchModel
            {
                TeachingYears = new List <string>
                {
                    searchFilter
                }
            };
            var academicYearOData = string.Empty;

            var filter = new AcademicYearODataFilter();
            var result = filter.ApplyFilter(searchModel);

            result.Should().Be(academicYearOData);
        }
        public async Task GetLearningAimsAsync_Calls_LearningAimService_GetLearningAims()
        {
            var searchModel       = new LearningAimsSearchModel();
            var learningAimModels = new List <LearningAimModel>();

            var serviceMock = new Mock <ILearningAimService>();

            serviceMock
            .Setup(m => m.GetLearningAims(searchModel))
            .ReturnsAsync(learningAimModels);

            var controller = new LearningAimsController(serviceMock.Object);
            var result     = await controller.GetLearningAimsAsync(searchModel);

            serviceMock.Verify(m => m.GetLearningAims(searchModel), Times.Once);
            result.Should().AllBeEquivalentTo(learningAimModels);
        }
        public void ApplyFilter_Multiple_Terms_Returns_Valid_OData()
        {
            var searchModel = new LearningAimsSearchModel
            {
                Levels = new List <string>
                {
                    "Test1",
                    "Test2"
                }
            };
            var awardingBodyOData = $"(Level eq '{searchModel.Levels[0]}' or Level eq '{searchModel.Levels[1]}')";

            var filter = new LevelODataFilter();
            var result = filter.ApplyFilter(searchModel);

            result.Should().Be(awardingBodyOData);
        }
示例#16
0
        public void SetLearningAimFilters(LearningAimsSearchModel searchModel, SearchParameters parameters)
        {
            var odataQuery = new StringBuilder();

            foreach (var filter in _learningAimOdataFilters)
            {
                var filterString = filter.ApplyFilter(searchModel);

                if (odataQuery.Length != 0 && !string.IsNullOrEmpty(filterString))
                {
                    odataQuery.Append(Concatenation);
                }

                odataQuery.Append(filterString);
            }

            parameters.Filter = odataQuery.ToString();
        }
示例#17
0
        public void SetFilters_ReturnValid_OData_Query_Multiple_Levels()
        {
            var searchModel = new LearningAimsSearchModel
            {
                Levels = new List <string>
                {
                    "1",
                    "Entry Level",
                    "3"
                }
            };

            var oDataQuery = $"(Level eq '{searchModel.Levels[0]}' or Level eq '{searchModel.Levels[1]}' or Level eq '{searchModel.Levels[2]}')";

            var frameworkFilterMock = new Mock <IFrameworkODataFilter>();
            var frameworkFilters    = new List <IFrameworkODataFilter> {
                frameworkFilterMock.Object
            };

            var standardsFilterMock = new Mock <IStandardODataFilter>();
            var standardsFilters    = new List <IStandardODataFilter> {
                standardsFilterMock.Object
            };

            var filterMock = new Mock <ILearningAimsODataFilter>();

            filterMock
            .Setup(m => m.ApplyFilter(searchModel))
            .Returns(oDataQuery);

            var oDataLevelFilters = new List <ILearningAimsODataFilter>
            {
                filterMock.Object
            };

            var parameters = new SearchParameters();

            var queryService = new ODataQueryService(oDataLevelFilters, frameworkFilters, standardsFilters);

            queryService.SetLearningAimFilters(searchModel, parameters);

            parameters.Filter.Should().Be(oDataQuery);
        }
        public void ApplyFilter_Returns_Valid_OData()
        {
            var searchModel = new LearningAimsSearchModel
            {
                TeachingYears = new List <string>
                {
                    "1920"
                },
                FundingStreams = new List <string>
                {
                    "TEST"
                }
            };
            var fundingStreamOData =
                $"(AcademicYears/any(ay:ay/Validities/any(v:v/ValidityCategory eq '{searchModel.FundingStreams.Single()}') and ay/AcademicYear eq '{searchModel.TeachingYears.Single()}'))";

            var filter = new FundingStreamODataFilter();
            var result = filter.ApplyFilter(searchModel);

            result.Should().Be(fundingStreamOData);
        }
        public async Task <IEnumerable <LearningAimModel> > GetLearningAims(LearningAimsSearchModel content)
        {
            var response = await _clientService.PostAsync <LearningAimsSearchModel, IEnumerable <LearningAimModel> >(Url, content);

            return(response);
        }
 public string ApplyFilter(LearningAimsSearchModel searchModel)
 {
     return(ApplyFilter(searchModel.TeachingYears));
 }
 public string ApplyFilter(LearningAimsSearchModel searchModel)
 {
     return(ApplyFilter(searchModel.AwardingBodies));
 }
示例#22
0
 private void SetFilters(LearningAimsSearchModel searchModel, SearchParameters parameters)
 {
     _oDataQueryService.SetLearningAimFilters(searchModel, parameters);
 }
示例#23
0
        public async Task <IEnumerable <Models.LearningAimModel> > GetLarsLearningDeliveries(LearningAimsSearchModel searchModel)
        {
            var parameters = GetDefaultParameters();

            SetFilters(searchModel, parameters);

            var searchTerm = FormatSearchTerm(searchModel.SearchTerm);

            IEnumerable <Models.LearningAimModel> learningAims;

            learningAims = await SearchIndex(searchTerm, parameters);

            return(learningAims);
        }
 public string ApplyFilter(LearningAimsSearchModel searchModel)
 {
     return(ApplyFilter(searchModel.Levels));
 }