public async Task <IActionResult> Reorder(Guid id, [FromBody] List <ReorderMenuItems.MenuItem> model) { var command = new ReorderMenuItems { SiteId = SiteId, Id = id, MenuItems = model }; await Task.Run(() => _commandSender.Send <ReorderMenuItems, Menu>(command)); return(new NoContentResult()); }
public IActionResult Reorder(Guid id, [FromBody] List <ReorderMenuItems.MenuItem> model) { var command = new ReorderMenuItems { SiteId = SiteId, Id = id, MenuItems = model }; _commandSender.Send <ReorderMenuItems, Menu>(command); return(new NoContentResult()); }
public void ReorderMenuItems(ReorderMenuItems cmd, IValidator <ReorderMenuItems> validator) { validator.ValidateCommand(cmd); var reorderedMenuItems = new List <MenuItemsReordered.MenuItem>(); var groupsByParent = cmd.MenuItems.GroupBy(x => x.ParentId).ToList(); foreach (var group in groupsByParent) { var parentId = group.Key; if (parentId != Guid.Empty && MenuItems.FirstOrDefault(x => x.Id == parentId) == null) { throw new Exception("Parent menu item not found."); } var items = group.ToList(); for (int i = 0; i < items.Count; i++) { var id = items[i].Id; var sortOrder = i + 1; var menuItem = MenuItems.FirstOrDefault(x => x.Id == id); if (menuItem == null || menuItem.Status == MenuItemStatus.Deleted) { throw new Exception("Menu item not found."); } if (menuItem.ParentId == parentId && menuItem.SortOrder == sortOrder) { continue; } menuItem.Reorder(parentId, sortOrder); reorderedMenuItems.Add(new MenuItemsReordered.MenuItem { Id = id, ParentId = parentId, SortOrder = sortOrder }); } } AddEvent(new MenuItemsReordered { SiteId = SiteId, AggregateRootId = Id, Name = Name, MenuItems = reorderedMenuItems }); }
public void Should_have_validation_error_when_site_id_is_empty() { var command = new ReorderMenuItems { SiteId = Guid.Empty }; var siteRulesMock = new Mock <ISiteRules>(); var validator = new ReorderMenuItemsValidator(siteRulesMock.Object); validator.ShouldHaveValidationErrorFor(x => x.SiteId, command); }
public void Should_have_validation_error_when_site_does_not_exist() { var command = new ReorderMenuItems { SiteId = Guid.NewGuid() }; var siteRulesMock = new Mock <ISiteRules>(); siteRulesMock.Setup(x => x.DoesSiteExist(command.SiteId)).Returns(false); var validator = new ReorderMenuItemsValidator(siteRulesMock.Object); validator.ShouldHaveValidationErrorFor(x => x.SiteId, command); }
public void Should_throw_exception_if_menu_item_does_not_exist() { _command = new ReorderMenuItems { Id = _menu.Id, MenuItems = new List <ReorderMenuItems.MenuItem> { new ReorderMenuItems.MenuItem { Id = Guid.NewGuid() } } }; var validatorMock = new Mock <IValidator <ReorderMenuItems> >(); validatorMock.Setup(x => x.Validate(_command)).Returns(new ValidationResult()); Assert.Throws <Exception>(() => _menu.ReorderMenuItems(_command, validatorMock.Object)); }
public void Should_throw_exception_if_menu_not_found() { var command = new ReorderMenuItems { Id = Guid.NewGuid(), MenuItems = new List <ReorderMenuItems.MenuItem>() }; var menuRepositoryMock = new Mock <IMenuRepository>(); menuRepositoryMock.Setup(x => x.GetById(command.Id)).Returns((Menu)null); var validatorMock = new Mock <IValidator <ReorderMenuItems> >(); validatorMock.Setup(x => x.Validate(command)).Returns(new ValidationResult()); var handler = new ReorderMenuItemsHandler(menuRepositoryMock.Object, validatorMock.Object); Assert.Throws <Exception>(() => handler.Handle(command)); }
public void Should_save_menu_when_reorder_menu_items() { 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 reorderMenuItemsCommand = new ReorderMenuItems { Id = Guid.NewGuid(), MenuItems = new List <ReorderMenuItems.MenuItem>() }; 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 <ReorderMenuItems> >(); validatorMock.Setup(x => x.Validate(reorderMenuItemsCommand)).Returns(new ValidationResult()); var createMenuHandler = new ReorderMenuItemsHandler(menuRepositoryMock.Object, validatorMock.Object); createMenuHandler.Handle(reorderMenuItemsCommand); menuRepositoryMock.Verify(x => x.Update(It.IsAny <Menu>())); }
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); }