public async Task GroupSearch_Index_SearchByIdRedirectsToDetailPage() { var grs = new Mock <IGroupReadService>(MockBehavior.Strict); var gds = new Mock <IGroupDownloadService>(); var cls = new Mock <ICachedLookupService>(); var request = new Mock <HttpRequestBase>(); var context = new Mock <HttpContextBase>(); var principal = new GenericPrincipal(new GenericIdentity("bob"), new[] { "superhuman" }); request.SetupGet(x => x.QueryString).Returns(HttpUtility.ParseQueryString(string.Empty)); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.User).Returns(principal); grs.Setup(x => x.SearchByIdsAsync(It.IsAny <string>(), It.Is <int?>(i => i == 1000), It.IsAny <string>(), It.IsAny <int?>(), It.Is <IPrincipal>(p => p == principal))).ReturnsAsync(() => new ApiPagedResult <SearchGroupDocument>(1, new List <SearchGroupDocument>() { new SearchGroupDocument { Name = "Group 1000", GroupUId = 1000 } })); var subject = new GroupSearchController(grs.Object, gds.Object, cls.Object); subject.ControllerContext = new ControllerContext(context.Object, new RouteData(), subject); var vm = new GroupSearchViewModel(); vm.GroupSearchModel.Text = "1000"; var result = (RedirectToRouteResult)await subject.Index(vm); Assert.That(result.RouteValues["action"], Is.EqualTo("Details")); Assert.That(result.RouteValues["controller"], Is.EqualTo("Group")); Assert.That(result.RouteValues["id"], Is.EqualTo(1000)); Assert.That(result.RouteValues["area"], Is.EqualTo("Groups")); }
public async Task <ActionResult> ResultsPartial(GroupSearchViewModel model) { var result = await SearchGroups(model); HttpContext.Response.Headers.Add("x-count", model.Count.ToString()); return(PartialView("Partials/_GroupSearchResults", model)); }
public async Task GroupSearch_Index_ReturnsAllGroupsByDefault() { var grs = new Mock <IGroupReadService>(); var gds = new Mock <IGroupDownloadService>(); var cls = new Mock <ICachedLookupService>(); var request = new Mock <HttpRequestBase>(); var context = new Mock <HttpContextBase>(); request.SetupGet(x => x.QueryString).Returns(HttpUtility.ParseQueryString(string.Empty)); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.User).Returns(new GenericPrincipal(new GenericIdentity("bob"), new[] { "superhuman" })); grs.Setup(x => x.SearchAsync(It.IsAny <GroupSearchPayload>(), It.IsAny <IPrincipal>())).ReturnsAsync(() => new ApiPagedResult <SearchGroupDocument>(2, new List <SearchGroupDocument>() { new SearchGroupDocument { Name = "Group 1" }, new SearchGroupDocument { Name = "Group 2" } })); var subject = new GroupSearchController(grs.Object, gds.Object, cls.Object); subject.ControllerContext = new ControllerContext(context.Object, new RouteData(), subject); var vm = new GroupSearchViewModel(); var result = (ViewResult)await subject.Index(vm); Assert.That(result.ViewName, Is.EqualTo("GroupResults")); }
private GroupSearchPayload CreateSearchPayload(GroupSearchViewModel model) => new GroupSearchPayload(model.StartIndex, model.PageSize) { Text = model.GroupSearchModel.Text.Clean(), GroupTypeIds = model.SelectedGroupTypeIds.ToArray(), GroupStatusIds = (User.Identity.IsAuthenticated) ? model.SelectedGroupStatusIds.ToArray() : null, SortBy = model.SortOption };
private async Task <ActionResult> SearchGroups(GroupSearchViewModel model) { if (model.SearchType == eSearchType.Group && model.GroupSearchModel.Text.IsNullOrEmpty()) { return(RedirectToSearchPage(model)); } if (model.GroupSearchModel.AutoSuggestValueAsInt.HasValue) { return(RedirectToDetailPage(model.GroupSearchModel.AutoSuggestValueAsInt.Value)); } else { model.SearchQueryString = Request.QueryString.ToString(); var text = model.GroupSearchModel.Text.Clean(); model.GroupTypes = (await _lookupService.GroupTypesGetAllAsync()).Select(x => new LookupItemViewModel(x)).ToList(); model.GroupStatuses = (await _lookupService.GroupStatusesGetAllAsync()).Select(x => new LookupItemViewModel(x)).ToList(); ApiPagedResult <SearchGroupDocument> results = null; if (text != null) { results = await _groupReadService.SearchByIdsAsync(text, text.ToInteger(), text, text.ToInteger(), User); } if (results != null && results.Count > 0) { model.Results.Add(results.Items[0]); model.Count = 1; } else { var payload = CreateSearchPayload(model); results = await _groupReadService.SearchAsync(payload, User); model.Results = results.Items; if (model.StartIndex == 0) { model.Count = results.Count; } } if (model.Count == 1) { return(RedirectToDetailPage(model.Results.Single().GroupUId)); } if (model.Count == 0) { return(RedirectToSearchPage(model)); } return(View("GroupResults", model)); } }
private ActionResult RedirectToSearchPage(GroupSearchViewModel model) { var routeDictionary = new RouteValueDictionary { { "action", "Index" }, { "controller", "Search" }, { "area", string.Empty }, { "SelectedTab", SearchViewModel.Tab.Groups }, { "SearchType", model.SearchType }, { "GroupSearchModel.Text", model.GroupSearchModel.Text }, { "NoResults", "True" } }; return(new RedirectResult(Url.RouteUrl(routeDictionary))); }
public async Task GroupSearch_Index_AutosuggestRedirectsToDetailPage() { var grs = new Mock <IGroupReadService>(MockBehavior.Strict); var gds = new Mock <IGroupDownloadService>(MockBehavior.Strict); var cls = new Mock <ICachedLookupService>(MockBehavior.Strict); var request = new Mock <HttpRequestBase>(MockBehavior.Strict); var context = new Mock <HttpContextBase>(MockBehavior.Strict); var subject = new GroupSearchController(grs.Object, gds.Object, cls.Object); var vm = new GroupSearchViewModel(); vm.GroupSearchModel.AutoSuggestValue = "1000"; var result = (RedirectToRouteResult)await subject.Index(vm); Assert.That(result.RouteValues["action"], Is.EqualTo("Details")); Assert.That(result.RouteValues["controller"], Is.EqualTo("Group")); Assert.That(result.RouteValues["id"], Is.EqualTo(1000)); Assert.That(result.RouteValues["area"], Is.EqualTo("Groups")); }
public async Task <ActionResult> Index(GroupSearchViewModel model) => await SearchGroups(model);