Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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());
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        public void MetaIds_Is_Empty_List_When_MetaIds_Is_Empty()
        {
            var query = new ConceptSearchQuery {
                MetaIds = new List <int>()
            };

            Assert.Empty(query.MetaIds);
        }
Esempio n. 6
0
        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());
        }
Esempio n. 7
0
        public ActionResult <Response> Search([FromQuery] ConceptSearchQuery query = null)
        {
            var concepts = _service.SearchForConcepts(query);

            if (concepts != null)
            {
                return(Ok(concepts));
            }

            return(InternalServerError());
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }