Exemple #1
0
        public void Handle(PageCreated @event)
        {
            foreach (var menuId in @event.MenuIds)
            {
                var command = new AddMenuItem
                {
                    SiteId     = @event.SiteId,
                    MenuId     = menuId,
                    MenuItemId = Guid.NewGuid(),
                    Type       = MenuItemType.Page,
                    PageId     = @event.AggregateRootId,
                    Text       = !string.IsNullOrEmpty(@event.Title) ? @event.Title : @event.Name
                };

                foreach (var languageId in _languageRepository.GetLanguagesIdList(@event.SiteId))
                {
                    command.MenuItemLocalisations.Add(new MenuItemLocalisation
                    {
                        LanguageId = languageId
                    });
                }

                _commandSender.Send <AddMenuItem, Menu>(command);
            }
        }
Exemple #2
0
        private void RibbonControl_Loaded(object sender, RoutedEventArgs e)
        {
            AddMenuItem addMenuItem = new AddMenuItem();//Class_Initialize类就是创建菜单的那个

            addMenuItem.CreateRibbon();
            //Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            //ed.WriteMessage("RibbonControlLoaded ....");
        }
        public IActionResult AddItem(Guid id, [FromBody] AddMenuItem model)
        {
            model.SiteId     = SiteId;
            model.MenuId     = id;
            model.MenuItemId = Guid.NewGuid();

            _commandSender.Send <AddMenuItem, Menu>(model);

            return(new NoContentResult());
        }
        public async Task <IActionResult> AddItem(Guid id, [FromBody] AddMenuItem model)
        {
            model.SiteId     = SiteId;
            model.MenuId     = id;
            model.MenuItemId = Guid.NewGuid();

            await Task.Run(() => _commandSender.Send <AddMenuItem, Menu>(model));

            return(new NoContentResult());
        }
Exemple #5
0
        public static Menu Menu(Guid siteId, Guid id, string name, string itemText, string itemTextLocalised, Guid menuItemId = new Guid(), Guid languageId = new Guid())
        {
            if (menuItemId == Guid.Empty)
            {
                menuItemId = Guid.NewGuid();
            }

            if (languageId == Guid.Empty)
            {
                languageId = Guid.NewGuid();
            }

            var createCommand = new CreateMenu
            {
                SiteId = siteId,
                Id     = id,
                Name   = name
            };

            var createValidatorMock = new Mock <IValidator <CreateMenu> >();

            createValidatorMock.Setup(x => x.Validate(createCommand)).Returns(new ValidationResult());

            var menu = Domain.Menus.Menu.CreateNew(createCommand, createValidatorMock.Object);

            var addItemCommand = new AddMenuItem
            {
                SiteId                = menu.SiteId,
                MenuId                = menu.Id,
                MenuItemId            = menuItemId,
                Type                  = MenuItemType.Link,
                PageId                = Guid.NewGuid(),
                Link                  = "link",
                Text                  = itemText,
                Title                 = "Title",
                MenuItemLocalisations = new List <MenuItemLocalisation>
                {
                    new MenuItemLocalisation
                    {
                        LanguageId = languageId,
                        Text       = itemTextLocalised,
                        Title      = "Title 1"
                    }
                }
            };

            var addItemValidatorMock = new Mock <IValidator <AddMenuItem> >();

            addItemValidatorMock.Setup(x => x.Validate(addItemCommand)).Returns(new ValidationResult());

            menu.AddMenuItem(addItemCommand, addItemValidatorMock.Object);

            return(menu);
        }
        public void Setup()
        {
            _menu = new Menu();

            var addMenuItemCommand = new AddMenuItem
            {
                SiteId                = Guid.NewGuid(),
                MenuId                = Guid.NewGuid(),
                MenuItemId            = Guid.NewGuid(),
                Type                  = MenuItemType.Link,
                PageId                = Guid.NewGuid(),
                Link                  = "link",
                Text                  = "Text",
                Title                 = "Title",
                MenuItemLocalisations = new List <MenuItemLocalisation>
                {
                    new MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 1",
                        Title      = "Title 1"
                    },
                    new MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 2",
                        Title      = "Title 2"
                    }
                }
            };

            var addMenuItemValidatorMock = new Mock <IValidator <AddMenuItem> >();

            addMenuItemValidatorMock.Setup(x => x.Validate(addMenuItemCommand)).Returns(new ValidationResult());

            _menu.AddMenuItem(addMenuItemCommand, addMenuItemValidatorMock.Object);

            _command = new RemoveMenuItem
            {
                MenuId     = _menu.Id,
                MenuItemId = addMenuItemCommand.MenuItemId
            };

            _validatorMock = new Mock <IValidator <RemoveMenuItem> >();
            _validatorMock.Setup(x => x.Validate(_command)).Returns(new ValidationResult());

            _menu.RemoveMenuItem(_command, _validatorMock.Object);

            _event = _menu.Events.OfType <MenuItemRemoved>().SingleOrDefault();
        }
Exemple #7
0
        public MenuItem(AddMenuItem cmd, int sortOrder) : base(cmd.MenuItemId)
        {
            MenuId    = cmd.MenuId;
            SortOrder = sortOrder;
            Type      = cmd.Type;
            PageId    = cmd.PageId;
            Link      = cmd.Link;
            Text      = cmd.Text;
            Title     = cmd.Title;
            Status    = MenuItemStatus.Active;

            SetLocalisations(cmd.MenuItemLocalisations);
            SetPermisisons(cmd.MenuItemPermissions);
        }
        public void Should_have_validation_error_if_menu_item_id_is_empty()
        {
            var addMenuItem = new AddMenuItem
            {
                MenuItemId = Guid.Empty
            };

            var pageRulesMock             = new Mock <IPageRules>();
            var languageRulesMock         = new Mock <ILanguageRules>();
            var localisationValidatorMock = new Mock <IValidator <MenuItemLocalisation> >();
            var siteRulesMock             = new Mock <ISiteRules>();

            var validator = new AddMenuItemValidator(siteRulesMock.Object, pageRulesMock.Object, languageRulesMock.Object, localisationValidatorMock.Object);

            validator.ShouldHaveValidationErrorFor(x => x.MenuItemId, addMenuItem);
        }
Exemple #9
0
        public MenuItem(AddMenuItem cmd, int sortOrder) : base(cmd.MenuItemId)
        {
            MenuId       = cmd.MenuId;
            SortOrder    = sortOrder;
            MenuItemType = cmd.MenuItemType;
            PageId       = cmd.PageId;
            Link         = cmd.Link;
            Text         = cmd.Text;
            Title        = cmd.Title;
            Status       = MenuItemStatus.Active;

            foreach (var item in cmd.MenuItemLocalisations)
            {
                AddLocalisation(item.LanguageId, item.Text, item.Title);
            }
        }
        public void Should_validate_command_and_update_menu()
        {
            var command = new AddMenuItem
            {
                SiteId                = Guid.NewGuid(),
                MenuId                = Guid.NewGuid(),
                MenuItemId            = Guid.NewGuid(),
                MenuItemType          = MenuItemType.Link,
                PageId                = Guid.NewGuid(),
                Link                  = "link",
                Text                  = "Text",
                Title                 = "Title",
                MenuItemLocalisations = new List <MenuItemDetails.MenuItemLocalisation>
                {
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 1",
                        Title      = "Title 1"
                    },
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 2",
                        Title      = "Title 2"
                    }
                }
            };

            var menu = new Menu();

            var menuRepositoryMock = new Mock <IMenuRepository>();

            menuRepositoryMock.Setup(x => x.GetById(command.SiteId, command.MenuId)).Returns(menu);
            menuRepositoryMock.Setup(x => x.Update(menu));

            var validatorMock = new Mock <IValidator <AddMenuItem> >();

            validatorMock.Setup(x => x.Validate(command)).Returns(new ValidationResult());

            var createMenuHandler = new AddMenuItemHandler(menuRepositoryMock.Object, validatorMock.Object);

            createMenuHandler.Handle(command);

            validatorMock.Verify(x => x.Validate(command));
            menuRepositoryMock.Verify(x => x.Update(menu));
        }
        public void Should_throw_exception_if_menu_not_found()
        {
            var command = new AddMenuItem
            {
                MenuId = Guid.NewGuid()
            };

            var menuRepositoryMock = new Mock <IMenuRepository>();

            menuRepositoryMock.Setup(x => x.GetById(command.MenuId)).Returns((Menu)null);

            var validatorMock = new Mock <IValidator <AddMenuItem> >();

            var handler = new AddMenuItemHandler(menuRepositoryMock.Object, validatorMock.Object);

            Assert.Throws <Exception>(() => handler.Handle(command));
        }
        public void Should_throw_exception_when_validation_fails()
        {
            var command = new AddMenuItem
            {
                SiteId                = Guid.NewGuid(),
                MenuId                = Guid.NewGuid(),
                MenuItemId            = Guid.NewGuid(),
                MenuItemType          = MenuItemType.Link,
                PageId                = Guid.NewGuid(),
                Link                  = "link",
                Text                  = "Text",
                Title                 = "Title",
                MenuItemLocalisations = new List <MenuItemDetails.MenuItemLocalisation>
                {
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 1",
                        Title      = "Title 1"
                    },
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 2",
                        Title      = "Title 2"
                    }
                }
            };

            var menuRepositoryMock = new Mock <IMenuRepository>();

            menuRepositoryMock.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(new Menu());

            var validatorMock = new Mock <IValidator <AddMenuItem> >();

            validatorMock.Setup(x => x.Validate(command)).Returns(new ValidationResult(new List <ValidationFailure> {
                new ValidationFailure("Id", "Id Error")
            }));

            var createMenuHandler = new AddMenuItemHandler(menuRepositoryMock.Object, validatorMock.Object);

            Assert.Throws <Exception>(() => createMenuHandler.Handle(command));
        }
        public void Setup()
        {
            _menu = new Menu();

            _command = new AddMenuItem
            {
                SiteId                = _menu.SiteId,
                MenuId                = Guid.NewGuid(),
                MenuItemId            = Guid.NewGuid(),
                MenuItemType          = MenuItemType.Link,
                PageId                = Guid.NewGuid(),
                Link                  = "link",
                Text                  = "Text",
                Title                 = "Title",
                MenuItemLocalisations = new List <MenuItemDetails.MenuItemLocalisation>
                {
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 1",
                        Title      = "Title 1"
                    },
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 2",
                        Title      = "Title 2"
                    }
                }
            };

            _validatorMock = new Mock <IValidator <AddMenuItem> >();
            _validatorMock.Setup(x => x.Validate(_command)).Returns(new ValidationResult());

            _menu.AddMenuItem(_command, _validatorMock.Object);

            _menuItem = _menu.MenuItems.FirstOrDefault(c => c.Id == _command.MenuItemId);

            _firstMenuItemLocalisation = _menuItem.MenuItemLocalisations.FirstOrDefault();

            _event = _menu.Events.OfType <MenuItemAdded>().SingleOrDefault();
        }
Exemple #14
0
        public void AddMenuItem(AddMenuItem cmd, IValidator <AddMenuItem> validator)
        {
            if (MenuItems.FirstOrDefault(x => x.Id == cmd.MenuItemId) != null)
            {
                throw new Exception("Menu item already added");
            }

            validator.ValidateCommand(cmd);

            var sortOrder   = MenuItems.Count(x => x.ParentId == Guid.Empty) + 1;
            var newMenuItem = new MenuItem(cmd, sortOrder);;

            AddEvent(new MenuItemAdded
            {
                SiteId          = SiteId,
                AggregateRootId = Id,
                Name            = Name,
                MenuItem        = newMenuItem
            });
        }
Exemple #15
0
        public void Setup()
        {
            var createMenuCommand = new CreateMenu
            {
                SiteId = Guid.NewGuid(),
                Id     = Guid.NewGuid(),
                Name   = "My Menu"
            };

            var createMenuValidatorMock = new Mock <IValidator <CreateMenu> >();

            createMenuValidatorMock.Setup(x => x.Validate(createMenuCommand)).Returns(new ValidationResult());

            _menu = Menu.CreateNew(createMenuCommand, createMenuValidatorMock.Object);

            var addMenuItem1 = new AddMenuItem
            {
                SiteId       = _menu.SiteId,
                MenuId       = _menu.Id,
                MenuItemId   = Guid.NewGuid(),
                MenuItemType = MenuItemType.Page,
                PageId       = Guid.NewGuid(),
                Text         = "Menu Item 1"
            };

            var addMenuItem2 = new AddMenuItem
            {
                SiteId       = _menu.SiteId,
                MenuId       = _menu.Id,
                MenuItemId   = Guid.NewGuid(),
                MenuItemType = MenuItemType.Page,
                PageId       = Guid.NewGuid(),
                Text         = "Menu Item 2"
            };

            var addMenuItem3 = new AddMenuItem
            {
                SiteId       = _menu.SiteId,
                MenuId       = _menu.Id,
                MenuItemId   = Guid.NewGuid(),
                MenuItemType = MenuItemType.Page,
                PageId       = Guid.NewGuid(),
                Text         = "Menu Item 3"
            };

            var addMenuItemValidatorMock = new Mock <IValidator <AddMenuItem> >();

            addMenuItemValidatorMock.Setup(x => x.Validate(addMenuItem1)).Returns(new ValidationResult());
            addMenuItemValidatorMock.Setup(x => x.Validate(addMenuItem2)).Returns(new ValidationResult());
            addMenuItemValidatorMock.Setup(x => x.Validate(addMenuItem3)).Returns(new ValidationResult());

            _menu.AddMenuItem(addMenuItem1, addMenuItemValidatorMock.Object);
            _menu.AddMenuItem(addMenuItem2, addMenuItemValidatorMock.Object);
            _menu.AddMenuItem(addMenuItem3, addMenuItemValidatorMock.Object);

            _command = new ReorderMenuItems
            {
                Id        = _menu.Id,
                MenuItems = new List <ReorderMenuItems.MenuItem>
                {
                    new ReorderMenuItems.MenuItem
                    {
                        Id = addMenuItem1.MenuItemId
                    },
                    new ReorderMenuItems.MenuItem
                    {
                        Id       = addMenuItem3.MenuItemId,
                        ParentId = addMenuItem1.MenuItemId
                    },
                    new ReorderMenuItems.MenuItem
                    {
                        Id       = addMenuItem2.MenuItemId,
                        ParentId = addMenuItem1.MenuItemId
                    }
                }
            };

            var validatorMock = new Mock <IValidator <ReorderMenuItems> >();

            validatorMock.Setup(x => x.Validate(_command)).Returns(new ValidationResult());

            _menu.ReorderMenuItems(_command, validatorMock.Object);

            _menuItem1 = _menu.MenuItems.FirstOrDefault(x => x.Id == addMenuItem1.MenuItemId);
            _menuItem2 = _menu.MenuItems.FirstOrDefault(x => x.Id == addMenuItem2.MenuItemId);
            _menuItem3 = _menu.MenuItems.FirstOrDefault(x => x.Id == addMenuItem3.MenuItemId);
        }
        public void Should_update_menu_when_remove_menu_item()
        {
            var createMenuCommand = new CreateMenu
            {
                SiteId = Guid.NewGuid(),
                Id     = Guid.NewGuid(),
                Name   = "My Menu"
            };
            var createMenuValidatorMock = new Mock <IValidator <CreateMenu> >();

            createMenuValidatorMock.Setup(x => x.Validate(createMenuCommand)).Returns(new ValidationResult());
            var menu = Menu.CreateNew(createMenuCommand, createMenuValidatorMock.Object);

            var addMenuItemCommand = new AddMenuItem
            {
                SiteId                = menu.SiteId,
                MenuId                = menu.Id,
                MenuItemId            = Guid.NewGuid(),
                MenuItemType          = MenuItemType.Link,
                PageId                = Guid.NewGuid(),
                Link                  = "link",
                Text                  = "Text",
                Title                 = "Title",
                MenuItemLocalisations = new List <MenuItemDetails.MenuItemLocalisation>
                {
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 1",
                        Title      = "Title 1"
                    },
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 2",
                        Title      = "Title 2"
                    }
                }
            };
            var addMenuItemValidatorMock = new Mock <IValidator <AddMenuItem> >();

            addMenuItemValidatorMock.Setup(x => x.Validate(addMenuItemCommand)).Returns(new ValidationResult());
            menu.AddMenuItem(addMenuItemCommand, addMenuItemValidatorMock.Object);

            var command = new RemoveMenuItem
            {
                MenuId     = menu.Id,
                MenuItemId = menu.MenuItems.FirstOrDefault().Id
            };

            var menuRepositoryMock = new Mock <IMenuRepository>();

            menuRepositoryMock.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(menu);
            menuRepositoryMock.Setup(x => x.Update(It.IsAny <Menu>()));

            var validatorMock = new Mock <IValidator <RemoveMenuItem> >();

            validatorMock.Setup(x => x.Validate(command)).Returns(new ValidationResult());

            var createMenuHandler = new RemoveMenuItemHandler(menuRepositoryMock.Object, validatorMock.Object);

            createMenuHandler.Handle(command);

            menuRepositoryMock.Verify(x => x.Update(It.IsAny <Menu>()));
        }