CapRaffle.Controllers.NavController.Menu C# (CSharp) Method

Menu() public method

public Menu ( string controller, string action ) : System.Web.Mvc.PartialViewResult
controller string
action string
return System.Web.Mvc.PartialViewResult
        public PartialViewResult Menu(string controller, string action)
        {
            var menuViewModel = new List<MenuViewModel>();
            menuViewModel.Add(new MenuViewModel { Text = "Event list", Action = "index", Controller = "event" });
            menuViewModel.Add(new MenuViewModel { Text = "Create new event", Action = "create", Controller = "event" });
            menuViewModel.Add(new MenuViewModel { Text = "Category list", Action = "index", Controller = "category" });
            menuViewModel.Add(new MenuViewModel { Text = "Create new category", Action = "create", Controller = "category" });

            if (!HttpContext.User.Identity.IsAuthenticated)
            {
                menuViewModel.Add(new MenuViewModel { Text = "Log in", Action = "LogOn", Controller = "Account" });
                menuViewModel.Add(new MenuViewModel { Text = "Register new account", Action = "Register", Controller = "Account" });
            }

            menuViewModel.Add(new MenuViewModel { Text = "About CapRaffle", Action = "About", Controller = "Home" });
            var selected = menuViewModel.Where(x => x.Controller.ToLower().Equals(controller.ToLower()) && x.Action.ToLower().Equals(action.ToLower())).FirstOrDefault();
            if(selected != null) selected.isSelected = true;

            return PartialView(menuViewModel);
        }

Usage Example

        public void Can_get_correct_selected_menu()
        {
            var mockHttpContext = new Mock<ControllerContext>();

            mockHttpContext.SetupGet(p => p.HttpContext.User.Identity.Name).Returns("*****@*****.**");
            mockHttpContext.SetupGet(p => p.HttpContext.Request.IsAuthenticated).Returns(true);

            var controller =  new NavController();
            controller.ControllerContext = new ControllerContext(mockHttpContext.Object.HttpContext, new RouteData(), controller);
            var result = (PartialViewResult)controller.Menu("Event", "Index");

            var viewModel = (IEnumerable<MenuViewModel>)result.Model;

            Assert.IsInstanceOf(typeof(IEnumerable<MenuViewModel>), result.Model);
            Assert.AreEqual(true, viewModel.Where(x => x.Controller.Equals("event") && x.Action.Equals("index")).FirstOrDefault().isSelected);
        }
NavController