public async Task GetProfileByFieldsTest_WhenMatchInDBByMoreThenOneField_ReturnResultsString() { //Arange var data = new List <ProfileDetails> { new ProfileDetails { name = "BBB", currentTitle = "ccc" } }.AsQueryable(); mockProfileDetailsSet.As <IQueryable <ProfileDetails> >().Setup(m => m.Provider).Returns(data.Provider); mockProfileDetailsSet.As <IQueryable <ProfileDetails> >().Setup(m => m.Expression).Returns(data.Expression); mockProfileDetailsSet.As <IQueryable <ProfileDetails> >().Setup(m => m.ElementType).Returns(data.ElementType); //Act SearchableFields searchableFields = new SearchableFields(); searchableFields.name = "BBB"; searchableFields.currentTitle = "ccc"; HttpResponseMessage res = await linkedinProfileController.GetProfileByFields(searchableFields); //Assert if (res.StatusCode == HttpStatusCode.OK) { Assert.IsInstanceOfType(res, typeof(HttpResponseMessage)); } else { Assert.Fail(); } }
private void DoCustomSearch() { var searchClauses = SearchableFields.Where(f => f.IsFilled).Select(f => f.GetSearchQuery()); var searchString = string.Join(" AND ", searchClauses.Select(c => string.Format("( {0} )", c))); SearchQuery = searchString; DoSearch(); }
public async Task <HttpResponseMessage> GetProfileByFields([FromUri] SearchableFields searchableFields) { HttpResponseMessage result; if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } try { if ((searchableFields.currentPosition == null) && (searchableFields.currentTitle == null) && (searchableFields.name == null) && (searchableFields.summary == null)) { result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StringContent("SearchProfileByFields must contain at least one value"); return(result); } List <ProfileDetails> matchProfiles = await pesrsistenceManager.searchByFields(searchableFields); if (matchProfiles != null && matchProfiles.Count > 0) { var responseData = JsonConvert.SerializeObject(matchProfiles, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StringContent(responseData); return(result); } else { result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StringContent("Profile Not Found"); return(result); } } catch (Exception ex) { // Log exception code goes here result = new HttpResponseMessage(HttpStatusCode.InternalServerError); result.Content = new StringContent("Error occured while executing GetProfileByFields" + ex.ToString()); return(result); } }
public async Task GetProfileByFieldsTest_WhenNoMatchInDBByOneField_ReturnNoResultsString() { //Arange var data = new List <ProfileDetails> { new ProfileDetails { name = "BBB" } }.AsQueryable(); mockProfileDetailsSet.As <IQueryable <ProfileDetails> >().Setup(m => m.Provider).Returns(data.Provider); mockProfileDetailsSet.As <IQueryable <ProfileDetails> >().Setup(m => m.Expression).Returns(data.Expression); mockProfileDetailsSet.As <IQueryable <ProfileDetails> >().Setup(m => m.ElementType).Returns(data.ElementType); //Act SearchableFields searchableFields = new SearchableFields(); searchableFields.name = "aaa"; HttpResponseMessage res = await linkedinProfileController.GetProfileByFields(searchableFields); //Assert if (res.StatusCode == HttpStatusCode.OK) { var responseString = res.Content.ReadAsStringAsync().Result; if ("Profile Not Found" == responseString.ToString()) { Assert.IsInstanceOfType(res, typeof(HttpResponseMessage)); } else { Assert.Fail(); } } else { Assert.Fail(); } }
public async Task GetProfileByFieldsTest_NoFieldsForSearch_ReturnNoResultsString() { //Arange var data = new List <ProfileDetails> { new ProfileDetails { name = "BBB", currentTitle = "ccc" } }.AsQueryable(); mockProfileDetailsSet.As <IQueryable <ProfileDetails> >().Setup(m => m.Provider).Returns(data.Provider); mockProfileDetailsSet.As <IQueryable <ProfileDetails> >().Setup(m => m.Expression).Returns(data.Expression); mockProfileDetailsSet.As <IQueryable <ProfileDetails> >().Setup(m => m.ElementType).Returns(data.ElementType); //Act SearchableFields searchableFields = new SearchableFields(); HttpResponseMessage res = await linkedinProfileController.GetProfileByFields(searchableFields); //Assert if (res.StatusCode == HttpStatusCode.OK) { var responseString = res.Content.ReadAsStringAsync().Result; if ("SearchProfileByFields must contain at least one value" == responseString.ToString()) { Assert.IsInstanceOfType(res, typeof(HttpResponseMessage)); } else { Assert.Fail(); } } else { Assert.Fail(); } }
public void AddIndex(params string[] fields) { SearchableFields.AddRange(fields); IndexDocuments(Documents, SearchableFields); }