Ejemplo n.º 1
0
        /// <summary>
        /// Clean the top level menu items by removing unit test data
        /// </summary>
        /// <param name="menuitems"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public MainMenuModels CleanMainMenuModel_deprecated(MainMenuModels menuitems, UserModel user)
        {
            MainMenuModels displayMenuItems = null;

            if (menuitems?.MenuItems == null || !menuitems.MenuItems.Any() || user == null)
            {
                return(null);
            }
            displayMenuItems = new MainMenuModels();

            foreach (var menuitem in menuitems.MenuItems)
            {
                //filter out the unit testing menu items - only assigned to super users
                if (user.SuperUser)
                {
                    if (!menuitem.DisplayText.ToLower().Contains("unit test"))
                    {
                        displayMenuItems.MenuItems.Add(menuitem);
                    }
                }
                else
                {
                    displayMenuItems.MenuItems.Add(menuitem);
                }
            }
            return(displayMenuItems);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Clean the menu items by removing unit test data
        /// </summary>
        /// <param name="menuitems"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public MainMenuModels CleanMainMenuModel(MainMenuModels menuitems, UserModel user)
        {
            MainMenuModels displayMenuItems = null;

            if (menuitems?.MenuItems == null || !menuitems.MenuItems.Any() || user == null)
            {
                return(null);
            }
            displayMenuItems = menuitems;

            if (user.SuperUser)
            {
                foreach (var menuitem in displayMenuItems.MenuItems.ToList())
                {
                    if (menuitem.DisplayText.ToLower().Contains("unit test"))
                    {
                        displayMenuItems.MenuItems.Remove(menuitem);
                        var children = displayMenuItems.MenuItems.FindAll(m => m.ParentId == menuitem.Id);
                        if (children.Any())
                        {
                            displayMenuItems.MenuItems.RemoveAll(m => m.ParentId == menuitem.Id);
                        }
                    }
                }
            }
            return(displayMenuItems);
        }
Ejemplo n.º 3
0
        private static MainMenuModels GetUnitTestMenu()
        {
            MainMenuModels menu = new MainMenuModels {
                MenuItems = new List <MainMenuModel>()
            };
            MainMenuModel menuitem = new MainMenuModel
            {
                DisplayText = "Unit Test Admin",
                Id          = 1
            };

            menu.MenuItems.Add(menuitem);
            menuitem = new MainMenuModel
            {
                DisplayText = "Unit Test Development",
                Id          = 2
            };
            menu.MenuItems.Add(menuitem);
            menuitem = new MainMenuModel
            {
                DisplayText = "Unit Test Testing",
                Id          = 3
            };
            menu.MenuItems.Add(menuitem);
            menuitem = new MainMenuModel
            {
                DisplayText = "Unit Test Design",
                Id          = 4
            };
            menu.MenuItems.Add(menuitem);
            return(menu);
        }
Ejemplo n.º 4
0
        public void CleanMainMenuModelInvalidTests()
        {
            //Arrange
            UserModel user = new UserModel
            {
                Email     = "*****@*****.**",
                SuperUser = true
            };

            //Act
            var cleanMenu = new MenuServices().CleanMainMenuModel(null, user);

            //Assert
            Assert.IsNull(cleanMenu);

            MainMenuModels menu = new MainMenuModels {
                MenuItems = null
            };

            cleanMenu = new MenuServices().CleanMainMenuModel(menu, user);

            //Assert
            Assert.IsNull(cleanMenu);

            menu      = MenuServicesTests.GetUnitTestMenu();
            cleanMenu = new MenuServices().CleanMainMenuModel(menu, null);

            //Assert
            Assert.IsNull(cleanMenu);
        }
Ejemplo n.º 5
0
        public void GetParentIdForMenuItemInvalidTests()
        {
            //Arrange
            var menu = MenuServicesTests.GetUnitTestMenu();

            //Act - fetch the parent ID
            MenuServices services = new MenuServices();
            int          parentId = services.GetParentIdForMenuItem("", menu);

            //Assert
            Assert.AreEqual(-1, parentId);

            parentId = services.GetParentIdForMenuItem(null, menu);

            //Assert
            Assert.AreEqual(-1, parentId);

            parentId = services.GetParentIdForMenuItem("Unit Test Testing", null);

            //Assert
            Assert.AreEqual(-1, parentId);

            menu = new MainMenuModels {
                MenuItems = null
            };

            parentId = services.GetParentIdForMenuItem("Unit Test Testing", menu);

            //Assert
            Assert.AreEqual(-1, parentId);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Fetch the parent ID for the specified menu item Display Text
        /// </summary>
        /// <param name="menuitem"></param>
        /// <param name="menuitems"></param>
        /// <returns></returns>
        public int GetParentIdForMenuItem(string menuitem, MainMenuModels menuitems)
        {
            int result = -1;

            if (string.IsNullOrEmpty(menuitem) || menuitems?.MenuItems == null)
            {
                return(result);
            }
            var foundMenuItem = menuitems.MenuItems.Find(m => m.DisplayText == menuitem);

            if (foundMenuItem != null)
            {
                result = foundMenuItem.Id;
            }
            return(result);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Fetch the menu items for the specified user and menu level
        /// </summary>
        /// <param name="useremail"></param>
        /// <param name="parentId"></param>
        /// <param name="rooturl"></param>
        /// <param name="encodedId"></param>
        /// <returns></returns>
        public async Task <MainMenuModels> GetModulesItemsForUser(string useremail, int parentId, string rooturl, string encodedId)
        {
            MainMenuModels result = null;

            if (string.IsNullOrEmpty(useremail) || string.IsNullOrEmpty(rooturl) || string.IsNullOrEmpty(encodedId) ||
                parentId < 0)
            {
                return(null);
            }

            string queryname  = WebTasksTypeConstants.GetMenuItemsForModuleByUser;
            string queryterms = WebApiServices.GetMenuItemsJsonQuerySearchTerms(useremail, parentId);
            string url        = $"{rooturl}api/webtasks?queryname={queryname}&queryterms={queryterms}";

            LoggingService service   = new LoggingService();
            var            stopwatch = new Stopwatch();

            try
            {
                var response = await new WebApiServices().GetData(url, encodedId);
                if (!string.IsNullOrEmpty(response) && response.Length > 0)
                {
                    result = new SerializerServices().DeserializeObject <MainMenuModels>(response.NormalizeJsonString());
                }
            }
            catch (Exception ex)
            {
                service.TrackException(ex);
                throw;
            }
            finally
            {
                stopwatch.Stop();
                var properties = new Dictionary <string, string>
                {
                    { "UserEmail", useremail },
                    { "WebServicesEndpoint", rooturl },
                    { "EncodedId", encodedId },
                    { "ParentId", parentId.ToString() }
                };
                service.TrackEvent(LoggingServiceConstants.GetModulesItemsForUserForParentId, stopwatch.Elapsed, properties);
            }
            return(result);
        }
        public async Task InvokeAsyncTest()
        {
            MenuItemsViewComponent component = new MenuItemsViewComponent();
            var mockContext = MenuItemsViewComponentTests.MockHttpContext();

            string         email     = mockContext.Get <string>(SessionConstants.EmailClaim);
            string         url       = mockContext.Get <string>(SessionConstants.WebServicesUrl);
            string         encodedId = mockContext.Get <string>(SessionConstants.EncodedUserId);
            MainMenuModels menuitems = mockContext.Get <MainMenuModels>(SessionConstants.TopLevelMenuItems);
            UserModel      user      = mockContext.Get <UserModel>(SessionConstants.CurrentUser);

            Assert.AreEqual(MenuItemsViewComponentTests.UserEmail, email);
            Assert.AreEqual(MenuItemsViewComponentTests.Endpoint, url);
            Assert.IsNotNull(encodedId);
            Assert.IsNull(menuitems);
            Assert.IsNotNull(user);
            Assert.AreEqual(MenuItemsViewComponentTests.UserEmail, user.Email);

            var result = await component.InvokeAsync(0, mockContext);

            Assert.IsNotNull(result);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Convert a menu of type <see cref="MainMenuModels"/> into a tree structure of type <see cref="TreeViewItemModel"/>
        /// as used by the Kendo UI tree component.
        /// </summary>
        /// <param name="mainmenu">An instance of <seealso cref="MainMenuModels"/></param>
        /// <returns>A list of <see cref="TreeViewItemModel"/></returns>
        public static List <TreeViewItemModel> ToKendoTreeViewItemModelList(this MainMenuModels mainmenu)
        {
            List <Kendo.Mvc.UI.TreeViewItemModel> result = null;

            if (mainmenu?.MenuItems == null || !mainmenu.MenuItems.Any())
            {
                return(null);
            }

            var topMenuItems = MainMenuModelsExtensions.GetChildItems(mainmenu, 0);

            result = new List <TreeViewItemModel>();

            foreach (var topMenuItem in topMenuItems)
            {
                TreeViewItemModel topMenuTreeItem = MainMenuModelsExtensions.CreateKendoTreeViewModel(topMenuItem);
                var children = MainMenuModelsExtensions.GetChildItems(mainmenu, topMenuItem.Id);
                if (children != null && children.Any())
                {
                    foreach (var child in children)
                    {
                        var subTopTree = MainMenuModelsExtensions.CreateKendoTreeViewModel(child);
                        topMenuTreeItem.Items.Add(subTopTree);
                        var subchildren = MainMenuModelsExtensions.GetChildItems(mainmenu, child.Id);
                        if (subchildren == null || !subchildren.Any())
                        {
                            continue;
                        }
                        foreach (var subchild in subchildren)
                        {
                            subTopTree.Items.Add(MainMenuModelsExtensions.CreateKendoTreeViewModel(subchild));
                        }
                    }
                }
                result.Add(topMenuTreeItem);
            }
            return(result);
        }
        public async Task InvokeAsyncTest()
        {
            SubFormMenuViewComponent component = new SubFormMenuViewComponent();
            var       mockContext = SubFormMenuViewComponentTests.MockHttpContext();
            const int parentId    = 17;

            string         email     = mockContext.Get <string>(SessionConstants.EmailClaim);
            string         url       = mockContext.Get <string>(SessionConstants.WebServicesUrl);
            string         encodedId = mockContext.Get <string>(SessionConstants.EncodedUserId);
            MainMenuModels menuitems = mockContext.Get <MainMenuModels>(SessionConstants.CompanyAdministrationMenuItems);
            UserModel      user      = mockContext.Get <UserModel>(SessionConstants.CurrentUser);

            Assert.AreEqual(SubFormMenuViewComponentTests.UserEmail, email);
            Assert.AreEqual(SubFormMenuViewComponentTests.Endpoint, url);
            Assert.IsNotNull(encodedId);
            Assert.IsNull(menuitems);
            Assert.IsNotNull(user);
            Assert.AreEqual(SubFormMenuViewComponentTests.UserEmail, user.Email);

            var result = await component.InvokeAsync(parentId, SessionConstants.CompanyAdministrationMenuItems, new MainMenuModels(), mockContext);

            Assert.IsNotNull(result);
        }
Ejemplo n.º 11
0
        private static MainMenuModels CreateMainMenu()
        {
            MainMenuModels result = new MainMenuModels {
                MenuItems = new List <MainMenuModel>()
            };
            MainMenuModel menuitem = new MainMenuModel
            {
                DisplayText = "Admin",
                ParentId    = 0,
                Id          = 1
            };

            result.MenuItems.Add(menuitem);
            menuitem = new MainMenuModel
            {
                DisplayText = "Company Admin",
                ParentId    = 1,
                Id          = 2
            };
            result.MenuItems.Add(menuitem);
            menuitem = new MainMenuModel
            {
                DisplayText = "Add Company",
                ParentId    = 2,
                Id          = 3
            };
            result.MenuItems.Add(menuitem);
            menuitem = new MainMenuModel
            {
                DisplayText = "Role Admin",
                ParentId    = 1,
                Id          = 4
            };
            result.MenuItems.Add(menuitem);
            menuitem = new MainMenuModel
            {
                DisplayText = "User Admin",
                ParentId    = 1,
                Id          = 5
            };
            result.MenuItems.Add(menuitem);
            menuitem = new MainMenuModel
            {
                DisplayText = "Document Manager",
                ParentId    = 0,
                Id          = 6
            };
            result.MenuItems.Add(menuitem);
            menuitem = new MainMenuModel
            {
                DisplayText = "Upload",
                ParentId    = 6,
                Id          = 7
            };
            result.MenuItems.Add(menuitem);
            menuitem = new MainMenuModel
            {
                DisplayText = "Download",
                ParentId    = 6,
                Id          = 8
            };
            result.MenuItems.Add(menuitem);
            return(result);
        }
Ejemplo n.º 12
0
 private static List <MainMenuModel> GetChildItems(MainMenuModels menuitems, int menuId)
 {
     return(menuitems.MenuItems.FindAll(m => m.ParentId == menuId));
 }
        /// <summary>
        /// Creates a sub-form-level menu blade
        /// </summary>
        /// <param name="parentId">The parent ID of the menu item</param>
        /// <param name="menuname">The name of the menu as stored in HTTP session storage</param>
        /// <param name="formmenu">An instance of <see cref="MainMenuModels"/> to populate</param>
        /// <param name="context">The context session - used for mocking the HTTP context for unit testing.</param>
        /// <returns></returns>
        public async Task <IViewComponentResult> InvokeAsync(int parentId, string menuname, MainMenuModels formmenu, ISession context = null)
        {
            //for unit-testing we pass in an instance of HttpContext.Session to allow for mocking the environment
            if (context == null)
            {
                context = HttpContext.Session;
            }

            if (context.Get <MainMenuModels>(menuname) == null)
            {
                LoggingService service   = new LoggingService();
                var            stopwatch = new Stopwatch();

                try
                {
                    formmenu = await new MenuServices().GetModulesItemsForUser(
                        context.Get <string>(SessionConstants.EmailClaim),
                        parentId,
                        context.Get <string>(SessionConstants.WebServicesUrl),
                        context.Get <string>(SessionConstants.EncodedUserId));
                    context.Set <MainMenuModels>(menuname, formmenu);
                }
                catch (Exception ex)
                {
                    service.TrackException(ex);
                    throw;
                }
                finally
                {
                    stopwatch.Stop();
                    var properties = new Dictionary <string, string>
                    {
                        { "UserEmail", context.Get <string>(SessionConstants.EmailClaim) },
                        { "WebServicesEndpoint", context.Get <string>(SessionConstants.WebServicesUrl) },
                        { "EncodedId", context.Get <string>(SessionConstants.EncodedUserId) }
                    };
                    service.TrackEvent(LoggingServiceConstants.GetModulesItemsForUser, stopwatch.Elapsed, properties);
                }
            }
            else
            {
                formmenu = context.Get <MainMenuModels>(menuname);
            }
            return(View(formmenu));
        }