public void TestPersonSearch() { PersonController personController = new PersonController(mockPersonService.Object); SearchParameters searchParameters = new SearchParameters(); searchParameters.NumberRecordsPerPage = pageSize; searchParameters.PageNumber = pageIndex; searchParameters.SortColumn = "PersonID"; searchParameters.SortDirection = "ASC"; searchParameters.SearchCriteria = new Dictionary<string, string>(); ActionResult result = personController.Search(searchParameters); // Verify that the result is of type PartialViewResult Assert.IsInstanceOf<PartialViewResult>(result); var partialViewResult = result as PartialViewResult; // Verify that the model of the result is PageOfList<PersonDocument> Assert.IsInstanceOf<PageOfList<PersonDocument>>(partialViewResult.Model); var personPage = partialViewResult.Model as PageOfList<PersonDocument>; // Verify that the same number of object provided by the service search method are returned by the controller Assert.AreEqual(personPage.Data.Count, 10); }
public ActionResult Search(SearchParameters searchParameters) { // Serialize sort direction to an enum of SortDirection SortDirection sortDirection = SortDirection.Ascending; Enum.TryParse<SortDirection>(searchParameters.SortDirection, out sortDirection); var searchCriteria = new PersonDocument(); if (searchParameters.SearchCriteria != null && searchParameters.SearchCriteria.Count() > 0) { foreach (var searchCriterion in searchParameters.SearchCriteria) { if (!string.IsNullOrEmpty(searchCriterion.Value)) { if (searchCriterion.Key == "PersonID") searchCriteria.PersonID = Int32.Parse(searchCriterion.Value); else if (searchCriterion.Key == "FirstName") searchCriteria.FirstName = searchCriterion.Value; else if (searchCriterion.Key == "LastName") searchCriteria.LastName = searchCriterion.Value; else if (searchCriterion.Key == "PhoneNumber") searchCriteria.PhoneNumber = searchCriterion.Value; else if (searchCriterion.Key == "StreetAddress") searchCriteria.StreetAddress = searchCriterion.Value; else if (searchCriterion.Key == "City") searchCriteria.City = searchCriterion.Value; else if (searchCriterion.Key == "Zip") searchCriteria.Zip = searchCriterion.Value; else if (searchCriterion.Key == "State") searchCriteria.State = searchCriterion.Value; else if (searchCriterion.Key == "EmailAddress") searchCriteria.EmailAddress = searchCriterion.Value; } } } var personsPage = personService.SearchPersons(searchParameters.PageNumber, searchParameters.NumberRecordsPerPage, searchParameters.SortColumn, sortDirection, searchCriteria); var pageOfListPersonDocuments = new PageOfList<PersonDocument>(personsPage.Data, searchParameters.PageNumber, searchParameters.NumberRecordsPerPage, personsPage.TotalItemCount); pageOfListPersonDocuments.SearchCriteria = searchParameters.SearchCriteria; return PartialView(pageOfListPersonDocuments); }
public ActionResult Search(SearchParameters searchParameters) { // Serialize sort column to an enum of PersonSearchColumn PersonSearchColumn personSearchColumn = PersonSearchColumn.LastName; Enum.TryParse<PersonSearchColumn>(searchParameters.SortColumn, out personSearchColumn); // Serialize sort direction to an enum of SortDirection SortDirection sortDirection = SortDirection.Ascending; Enum.TryParse<SortDirection>(searchParameters.SortDirection, out sortDirection); // Serialize the search criteria array into a dictionary of person search column and value Dictionary<PersonSearchColumn, string> searchCriteria = new Dictionary<PersonSearchColumn, string>(); if (searchParameters.SearchCriteria != null && searchParameters.SearchCriteria.Count() > 0) { foreach (var searchCriterion in searchParameters.SearchCriteria) { if (!string.IsNullOrEmpty(searchCriterion.Value)) { PersonSearchColumn column = PersonSearchColumn.None; Enum.TryParse<PersonSearchColumn>(searchCriterion.Key, out column); if (column != PersonSearchColumn.None) searchCriteria.Add(column, searchCriterion.Value); } } } var personsPage = _footlooseFSService.SearchPersonDocuments(searchParameters.PageNumber, personSearchColumn, sortDirection, searchParameters.NumberRecordsPerPage, searchCriteria); personsPage.SearchCriteria = searchParameters.SearchCriteria; return PartialView(personsPage); }