public Response SearchForConcepts(ConceptSearchQuery query) { try { var concepts = _conceptRepository.SearchForConcepts(query); var totalItems = 0; var numberOfPages = 0; try { totalItems = concepts.FirstOrDefault().TotalItems; numberOfPages = concepts.FirstOrDefault().NumberOfPages; } catch { } var res = new PagingDTO <ConceptDto>( Mapper.Map <List <ConceptDto> >(concepts), query, UrlHelper.Action("Search", "Concept", query), numberOfPages, totalItems); return(new Response { Data = res }); } catch (Exception ex) { return(null); } }
public void Search_Returns_Concepts_When_Only_Specified_Title() { var query = new ConceptSearchQuery { Title = "ConceptSearchQueryTitle" }; var status = Mock.Database.InsertStatus(Mock.MockStatus()); var category1 = Mock.Database.InsertCategory(Mock.MockCategory()); var meta1 = Mock.Database.InsertMeta(Mock.MockMeta(status, category1)); var category2 = Mock.Database.InsertCategory(Mock.MockCategory()); var meta2 = Mock.Database.InsertMeta(Mock.MockMeta(status, category2)); var c1 = Mock.MockConcept(status); c1.MetaIds = new List <int> { meta1.Id }; Mock.Database.InsertConcept(c1); var c2 = Mock.MockConcept(status); c2.MetaIds = new List <int> { meta2.Id }; c2.Title = $"Should match {query.Title}"; Mock.Database.InsertConcept(c2); Assert.Equal(2, ConceptRepository.GetAll(BaseListQuery).Count); var searchResult = ConceptRepository.SearchForConcepts(query); Assert.Single(searchResult); }
public void HasQuery_Is_True_When_Title_Has_Content_And_MetaIds_Is_Null() { var query = new ConceptSearchQuery { Title = "Title", MetaIds = null }; Assert.True(query.HasQuery()); }
public void HasQuery_Is_False_When_No_Title_And_MetaIds_Is_Empty() { var query = new ConceptSearchQuery { Title = null, MetaIds = new List <int>() }; Assert.False(query.HasQuery()); }
public void MetaIds_Is_Empty_List_When_MetaIds_Is_Empty() { var query = new ConceptSearchQuery { MetaIds = new List <int>() }; Assert.Empty(query.MetaIds); }
public void HasQuery_Is_True_When_No_Title_And_MetaIds_Has_Elements() { var query = new ConceptSearchQuery { Title = null, MetaIds = new List <int> { 1 } }; Assert.True(query.HasQuery()); }
public ActionResult <Response> Search([FromQuery] ConceptSearchQuery query = null) { var concepts = _service.SearchForConcepts(query); if (concepts != null) { return(Ok(concepts)); } return(InternalServerError()); }
public ConceptControllerTest() { _tokenHelper = A.Fake <ITokenHelper>(); A.CallTo(() => _tokenHelper.ReturnScope(A <ClaimsPrincipal> ._)).Returns(_allowedScope); A.CallTo(() => _tokenHelper.GetUserInfo()).Returns(new UserInfo()); _service = A.Fake <IConceptService>(); _controller = new ConceptController(_service, _tokenHelper); _createConcept = new CreateConceptDto { Title = "Title", Content = "Content", Created = DateTime.Now, Updated = DateTime.Now, }; _updateConcept = new UpdateConceptDto { Title = "Title", Content = "Content", Created = DateTime.Now, Updated = DateTime.Now, }; _searchQuery = new ConceptSearchQuery { Title = "title", MetaIds = new List <int> { 1, 2 } }; _errorResponse = new Response { Errors = new ModelStateDictionary() }; _errorResponse.Errors.TryAddModelError("err", "err"); _listResponse = new Response { Data = new List <ConceptDto>() }; _singleResponse = new Response { Data = new ConceptDto() }; _userInfo = new UserInfo { Email = _allowedUserEmail, FullName = "Name" }; _listQuery = BaseListQuery.DefaultValues(language); }
public void Search_Returns_Concept_When_Query_Consist_Of_Multiple_Valid_Meta_Queries() { const string title = "title"; var status = Mock.Database.InsertStatus(Mock.MockStatus()); var category1 = Mock.Database.InsertCategory(Mock.MockCategory()); var category2 = Mock.Database.InsertCategory(Mock.MockCategory()); var meta1 = Mock.Database.InsertMeta(Mock.MockMeta(status, category1)); var meta2 = Mock.Database.InsertMeta(Mock.MockMeta(status, category2)); var meta3 = Mock.Database.InsertMeta(Mock.MockMeta(status, category2)); var c1 = Mock.MockConcept(status); c1.MetaIds = new List <int> { meta1.Id, meta2.Id, meta3.Id }; c1.Title = title; Mock.Database.InsertConcept(c1); var c2 = Mock.MockConcept(status); c2.MetaIds = new List <int> { meta2.Id }; c2.Title = title; Mock.Database.InsertConcept(c2); var query = new ConceptSearchQuery { MetaIds = new List <int> { meta1.Id, meta3.Id } }; Assert.Equal(2, ConceptRepository.GetAll(BaseListQuery).Count); var searchResult = ConceptRepository.SearchForConcepts(query); Assert.Single(searchResult); }
public void Search_Returns_Concept_When_Title_And_MetaId_Is_Specified() { const string title = "title"; var status = Mock.Database.InsertStatus(Mock.MockStatus()); var category1 = Mock.Database.InsertCategory(Mock.MockCategory()); var meta1 = Mock.Database.InsertMeta(Mock.MockMeta(status, category1)); var meta2 = Mock.Database.InsertMeta(Mock.MockMeta(Mock.MockStatus(), Mock.MockCategory())); var c1 = Mock.MockConcept(status); c1.MetaIds = new List <int> { meta1.Id }; c1.Title = title; Mock.Database.InsertConcept(c1); var c2 = Mock.MockConcept(status); c2.MetaIds = new List <int> { meta2.Id }; c2.Title = title; Mock.Database.InsertConcept(c2); var query = new ConceptSearchQuery { Title = title, MetaIds = new List <int> { meta1.Id } }; var count = ConceptRepository.GetAll(BaseListQuery).Count; Assert.Equal(2, count); var searchResult = ConceptRepository.SearchForConcepts(query); Assert.Single(searchResult); }
public List <Concept> SearchForConcepts(ConceptSearchQuery searchParam) { if (searchParam == null) { return(GetAll(BaseListQuery.DefaultValues(_languageConfig.Default))); } var queryHasTitle = !string.IsNullOrWhiteSpace(searchParam.Title); var queryHasMetaIds = searchParam.MetaIds != null && searchParam.MetaIds.Count > 0; var sqlParameters = searchParam.GetSqlParameters(); if (queryHasTitle && !queryHasMetaIds) { return(GetConceptsByStoredProcedure("get_concepts_by_title", sqlParameters)); } if (!queryHasTitle && queryHasMetaIds) { return(GetConceptsByStoredProcedure("get_concepts_by_list_of_meta_id", sqlParameters)); } if (!queryHasMetaIds && !queryHasTitle) { if (string.IsNullOrEmpty(searchParam.Language)) { searchParam.Language = _languageConfig.Default; } return(GetAll(searchParam)); } // Has metaIds and title var result = GetConceptsByStoredProcedure("get_concepts_by_title_and_meta_id", sqlParameters); // Did not find any results with metaIds. Tries with title only if (result == null || result.Count == 0) { sqlParameters.ForEach(x => x.Collection = null); sqlParameters.RemoveAll(x => x.ParameterName == "list_of_meta_id"); return(GetConceptsByStoredProcedure("get_concepts_by_title", sqlParameters)); } return(result); }
public void Search_Returns_Default_List_Of_Concepts_When_MetaId_And_Title_Is_Null() { var status = Mock.MockStatus(); var meta1 = Mock.Database.InsertMeta(Mock.MockMeta(status, Mock.MockCategory())); var c1 = Mock.MockConcept(status); c1.MetaIds = new List <int> { meta1.Id }; Mock.Database.InsertConcept(c1); var query = new ConceptSearchQuery(); Assert.Single(ConceptRepository.GetAll(BaseListQuery)); var searchResult = ConceptRepository.SearchForConcepts(query); Assert.NotEmpty(searchResult); }
public void Search_Returns_Concepts_By_MetaId_Only() { var status = Mock.Database.InsertStatus(Mock.MockStatus()); var category1 = Mock.Database.InsertCategory(Mock.MockCategory()); var meta1 = Mock.Database.InsertMeta(Mock.MockMeta(status, category1)); var category2 = Mock.Database.InsertCategory(Mock.MockCategory()); var meta2 = Mock.Database.InsertMeta(Mock.MockMeta(status, category2)); var c1 = Mock.MockConcept(status); c1.MetaIds = new List <int> { meta1.Id }; Mock.Database.InsertConcept(c1); var c2 = Mock.MockConcept(status); c2.MetaIds = new List <int> { meta2.Id }; Mock.Database.InsertConcept(c2); var query = new ConceptSearchQuery { MetaIds = new List <int> { meta1.Id } }; Assert.Equal(2, ConceptRepository.GetAll(BaseListQuery).Count); var searchResult = ConceptRepository.SearchForConcepts(query); Assert.Single(searchResult); }