public async Task <IActionResult> ReorderPageModules([FromBody] ReorderPageModules model) { model.SiteId = SiteId; await Task.Run(() => _commandSender.Send <ReorderPageModules, Page>(model)); return(new NoContentResult()); }
public void Should_have_validation_error_when_site_id_is_empty() { var command = new ReorderPageModules { SiteId = Guid.Empty }; var siteRulesMock = new Mock <ISiteRules>(); var validator = new ReorderPageModulesValidator(siteRulesMock.Object); validator.ShouldHaveValidationErrorFor(x => x.SiteId, command); }
public void Should_have_validation_error_when_site_does_not_exist() { var command = new ReorderPageModules { SiteId = Guid.NewGuid() }; var siteRulesMock = new Mock <ISiteRules>(); siteRulesMock.Setup(x => x.DoesSiteExist(command.SiteId)).Returns(false); var validator = new ReorderPageModulesValidator(siteRulesMock.Object); validator.ShouldHaveValidationErrorFor(x => x.SiteId, command); }
public void ReorderPageModules(ReorderPageModules cmd, IValidator <ReorderPageModules> validator) { validator.ValidateCommand(cmd); var reorderedPageModules = new List <PageModulesReordered.PageModule>(); foreach (var zone in cmd.Zones) { for (int i = 0; i < zone.Modules.Count; i++) { var moduleId = zone.Modules[i]; var zoneName = zone.Name; var sortOrder = i + 1; var pageModule = PageModules.FirstOrDefault(x => x.ModuleId == moduleId); if (pageModule == null || pageModule.Status == PageModuleStatus.Deleted) { throw new Exception("Page module not found."); } if (pageModule.Zone == zoneName && pageModule.SortOrder == sortOrder) { continue; } pageModule.Reorder(zoneName, sortOrder); reorderedPageModules.Add(new PageModulesReordered.PageModule { ModuleId = pageModule.ModuleId, Zone = zoneName, SortOrder = sortOrder }); } } AddEvent(new PageModulesReordered { SiteId = SiteId, AggregateRootId = Id, PageModules = reorderedPageModules }); }
public IActionResult ReorderPageModules([FromBody] ReorderPageModules model) { model.SiteId = SiteId; _commandSender.Send<ReorderPageModules, Page>(model); return new NoContentResult(); }
public void Setup() { var createPageCommand = new CreatePage { SiteId = Guid.NewGuid(), Id = Guid.NewGuid(), Name = "Name", Url = "url" }; var createPageValidatorMock = new Mock <IValidator <CreatePage> >(); createPageValidatorMock.Setup(x => x.Validate(createPageCommand)).Returns(new ValidationResult()); _page = Page.CreateNew(createPageCommand, createPageValidatorMock.Object); _page.AddModule(new PageModule(_page.Id, Guid.NewGuid(), Guid.NewGuid(), "Title", "Header", 1)); _page.AddModule(new PageModule(_page.Id, Guid.NewGuid(), Guid.NewGuid(), "Title", "Header", 2)); _page.AddModule(new PageModule(_page.Id, Guid.NewGuid(), Guid.NewGuid(), "Title", "Content", 1)); _page.AddModule(new PageModule(_page.Id, Guid.NewGuid(), Guid.NewGuid(), "Title", "Content", 2)); _page.AddModule(new PageModule(_page.Id, Guid.NewGuid(), Guid.NewGuid(), "Title", "Footer", 1)); _page.AddModule(new PageModule(_page.Id, Guid.NewGuid(), Guid.NewGuid(), "Title", "Footer", 2)); _command = new ReorderPageModules { SiteId = _page.SiteId, PageId = _page.Id, Zones = new List <ReorderPageModules.Zone> { new ReorderPageModules.Zone { Name = "Header", Modules = new List <Guid> { _page.PageModules.FirstOrDefault().ModuleId } }, new ReorderPageModules.Zone { Name = "Content", Modules = new List <Guid> { _page.PageModules.Skip(2).FirstOrDefault().ModuleId, _page.PageModules.Skip(3).FirstOrDefault().ModuleId, _page.PageModules.Skip(1).FirstOrDefault().ModuleId } }, new ReorderPageModules.Zone { Name = "Footer", Modules = new List <Guid> { _page.PageModules.Skip(4).FirstOrDefault().ModuleId, _page.PageModules.Skip(5).FirstOrDefault().ModuleId } } } }; var validatorMock = new Mock <IValidator <ReorderPageModules> >(); validatorMock.Setup(x => x.Validate(_command)).Returns(new ValidationResult()); _page.ReorderPageModules(_command, validatorMock.Object); _event = _page.Events.OfType <PageModulesReordered>().SingleOrDefault(); }
public IActionResult ReorderPageModules([FromBody] ReorderPageModules model) { model.SiteId = SiteId; _dispatcher.SendAndPublish <ReorderPageModules, Page>(model); return(new NoContentResult()); }