public void Should_return_two_events_if_module_is_not_used_in_other_pages() { var siteId = Guid.NewGuid(); var pageId = Guid.NewGuid(); var moduleId = Guid.NewGuid(); var addPageModuleCommand = new AddPageModule { SiteId = siteId, PageId = pageId, ModuleId = moduleId, PageModuleId = Guid.NewGuid(), Zone = "Zone", SortOrder = 1, Title = "Title" }; var addPageModuleValidatoMock = new Mock <IValidator <AddPageModule> >(); addPageModuleValidatoMock.Setup(x => x.Validate(addPageModuleCommand)).Returns(new ValidationResult()); var page = new Page(); page.AddModule(addPageModuleCommand, addPageModuleValidatoMock.Object); page.Events.Clear(); var command = new RemoveModule { SiteId = siteId, PageId = pageId, ModuleId = moduleId }; var moduleRepositoryMock = new Mock <IModuleRepository>(); moduleRepositoryMock.Setup(x => x.GetCountByModuleId(command.ModuleId)).Returns(1); moduleRepositoryMock.Setup(x => x.GetById(command.SiteId, command.ModuleId)).Returns(new Module()); var pageRepositoryMock = new Mock <IPageRepository>(); pageRepositoryMock.Setup(x => x.GetById(command.SiteId, command.PageId)).Returns(page); var deleteModuleValidatorMock = new Mock <IValidator <DeleteModule> >(); deleteModuleValidatorMock.Setup(x => x.Validate(It.IsAny <DeleteModule>())).Returns(new ValidationResult()); var removePageModuleValidatorMock = new Mock <IValidator <RemovePageModule> >(); removePageModuleValidatorMock.Setup(x => x.Validate(It.IsAny <RemovePageModule>())).Returns(new ValidationResult()); var removeModuleHandler = new RemoveModuleHandler(moduleRepositoryMock.Object, pageRepositoryMock.Object, deleteModuleValidatorMock.Object, removePageModuleValidatorMock.Object); var events = removeModuleHandler.Handle(command); var enumerable = events as IList <IEvent> ?? events.ToList(); Assert.AreEqual(typeof(PageModuleRemoved), enumerable.FirstOrDefault().GetType()); Assert.AreEqual(typeof(ModuleDeleted), enumerable.Skip(1).FirstOrDefault().GetType()); }
public void Setup() { _moduleId = Guid.NewGuid(); var addPageModuleCommand = new AddPageModule { SiteId = Guid.NewGuid(), PageId = Guid.NewGuid(), ModuleId = _moduleId, Id = Guid.NewGuid(), Title = "Title", Zone = "Zone" }; var addPageModuleValidatorMock = new Mock <IValidator <AddPageModule> >(); addPageModuleValidatorMock.Setup(x => x.Validate(addPageModuleCommand)).Returns(new ValidationResult()); _page = new Page(); _page.AddModule(addPageModuleCommand, addPageModuleValidatorMock.Object); _pageModule = _page.PageModules.FirstOrDefault(x => x.ModuleId == _moduleId); _command = new RemovePageModule { SiteId = addPageModuleCommand.SiteId, PageId = addPageModuleCommand.PageId, ModuleId = _moduleId, }; _validatorMock = new Mock <IValidator <RemovePageModule> >(); _validatorMock.Setup(x => x.Validate(_command)).Returns(new ValidationResult()); _page.RemoveModule(_command, _validatorMock.Object); _event = _page.Events.OfType <PageModuleRemoved>().SingleOrDefault(); }
public static Page Page(Guid siteId, Guid id, string name, Guid pageModuleId = new Guid(), Guid moduleId = new Guid()) { if (pageModuleId == Guid.Empty) { pageModuleId = Guid.NewGuid(); } if (moduleId == Guid.Empty) { moduleId = Guid.NewGuid(); } var createCommand = new CreatePage { SiteId = siteId, Id = id, Name = name, Url = "url", Title = "Title", MetaDescription = "Meta Description", MetaKeywords = "Meta Keywords", PageLocalisations = new List <PageLocalisation> { new PageLocalisation { LanguageId = Guid.NewGuid(), Url = "url", Title = "Head Title", MetaDescription = "Meta Description", MetaKeywords = "Meta Keywords" } } }; var createValidatorMock = new Mock <IValidator <CreatePage> >(); createValidatorMock.Setup(x => x.Validate(createCommand)).Returns(new ValidationResult()); var page = Domain.Pages.Page.CreateNew(createCommand, createValidatorMock.Object); var addModuleCommand = new AddPageModule { SiteId = siteId, PageId = id, ModuleId = moduleId, Id = pageModuleId, Title = "Title", Zone = "Zone", SortOrder = 1 }; var addModuleValidatorMock = new Mock <IValidator <AddPageModule> >(); addModuleValidatorMock.Setup(x => x.Validate(addModuleCommand)).Returns(new ValidationResult()); page.AddModule(addModuleCommand, addModuleValidatorMock.Object); return(page); }
public void Should_validate_command_and_update_page() { var page = new Page(); var siteId = Guid.NewGuid(); var pageId = Guid.NewGuid(); var moduleId = Guid.NewGuid(); var addPageModuleCommand = new AddPageModule { SiteId = siteId, PageId = pageId, ModuleId = moduleId, PageModuleId = Guid.NewGuid(), Title = "Title", Zone = "Zone" }; var addPageModuleValidatorMock = new Mock <IValidator <AddPageModule> >(); addPageModuleValidatorMock.Setup(x => x.Validate(addPageModuleCommand)).Returns(new ValidationResult()); page.AddModule(addPageModuleCommand, addPageModuleValidatorMock.Object); var command = new UpdatePageModuleDetails { SiteId = siteId, PageId = pageId, ModuleId = moduleId, Title = "New Title", PageModuleLocalisations = new List <PageModuleLocalisation> { new PageModuleLocalisation { LanguageId = Guid.NewGuid(), Title = "Title" }, new PageModuleLocalisation { LanguageId = Guid.NewGuid(), Title = "Title" } } }; var repositoryMock = new Mock <IPageRepository>(); repositoryMock.Setup(x => x.GetById(command.SiteId, command.PageId)).Returns(page); var validatorMock = new Mock <IValidator <UpdatePageModuleDetails> >(); validatorMock.Setup(x => x.Validate(command)).Returns(new ValidationResult()); var createPageHandler = new UpdatePageModuleDetailsHandler(repositoryMock.Object, validatorMock.Object); createPageHandler.Handle(command); validatorMock.Verify(x => x.Validate(command)); repositoryMock.Verify(x => x.Update(page)); }
public void Should_throw_validation_exception_when_validation_fails() { var page = new Page(); var siteId = Guid.NewGuid(); var pageId = Guid.NewGuid(); var moduleId = Guid.NewGuid(); var addPageModuleCommand = new AddPageModule { SiteId = siteId, PageId = pageId, ModuleId = moduleId, PageModuleId = Guid.NewGuid(), Title = "Title", Zone = "Zone" }; var addPageModuleValidatorMock = new Mock <IValidator <AddPageModule> >(); addPageModuleValidatorMock.Setup(x => x.Validate(addPageModuleCommand)).Returns(new ValidationResult()); page.AddModule(addPageModuleCommand, addPageModuleValidatorMock.Object); var command = new UpdatePageModuleDetails { SiteId = siteId, PageId = pageId, ModuleId = moduleId, Title = "New Title", PageModuleLocalisations = new List <PageModuleLocalisation> { new PageModuleLocalisation { LanguageId = Guid.NewGuid(), Title = "Title" }, new PageModuleLocalisation { LanguageId = Guid.NewGuid(), Title = "Title" } } }; var repositoryMock = new Mock <IPageRepository>(); repositoryMock.Setup(x => x.GetById(command.SiteId, command.PageId)).Returns(page); var validatorMock = new Mock <IValidator <UpdatePageModuleDetails> >(); validatorMock.Setup(x => x.Validate(command)).Returns(new ValidationResult(new List <ValidationFailure> { new ValidationFailure("Title", "Title Error") })); var createPageHandler = new UpdatePageModuleDetailsHandler(repositoryMock.Object, validatorMock.Object); Assert.Throws <ValidationException>(() => createPageHandler.Handle(command)); }
public void Should_update_module_if_not_used_in_other_pages() { var siteId = Guid.NewGuid(); var pageId = Guid.NewGuid(); var moduleId = Guid.NewGuid(); var addPageModuleCommand = new AddPageModule { SiteId = siteId, PageId = pageId, ModuleId = moduleId, PageModuleId = Guid.NewGuid(), Zone = "Zone", SortOrder = 1, Title = "Title" }; var addPageModuleValidatoMock = new Mock <IValidator <AddPageModule> >(); addPageModuleValidatoMock.Setup(x => x.Validate(addPageModuleCommand)).Returns(new ValidationResult()); var page = PageFactory.Page(siteId, pageId, "My Page", Guid.NewGuid(), addPageModuleCommand.ModuleId); var command = new RemoveModule { SiteId = siteId, PageId = pageId, ModuleId = moduleId }; var moduleRepositoryMock = new Mock <IModuleRepository>(); moduleRepositoryMock.Setup(x => x.GetCountByModuleId(command.ModuleId)).Returns(1); moduleRepositoryMock.Setup(x => x.GetById(command.SiteId, command.ModuleId)).Returns(new Module()); moduleRepositoryMock.Setup(x => x.Update(It.IsAny <Module>())); var pageRepositoryMock = new Mock <IPageRepository>(); pageRepositoryMock.Setup(x => x.GetById(command.SiteId, command.PageId)).Returns(page); var deleteModuleValidatorMock = new Mock <IValidator <DeleteModule> >(); deleteModuleValidatorMock.Setup(x => x.Validate(It.IsAny <DeleteModule>())).Returns(new ValidationResult()); var removePageModuleValidatorMock = new Mock <IValidator <RemovePageModule> >(); removePageModuleValidatorMock.Setup(x => x.Validate(It.IsAny <RemovePageModule>())).Returns(new ValidationResult()); var removeModuleHandler = new RemoveModuleHandler(moduleRepositoryMock.Object, pageRepositoryMock.Object, deleteModuleValidatorMock.Object, removePageModuleValidatorMock.Object); removeModuleHandler.Handle(command); moduleRepositoryMock.Verify(x => x.Update(It.IsAny <Module>())); }
public void Setup() { _page = new Page(); var siteId = Guid.NewGuid(); var pageId = Guid.NewGuid(); var moduleId = Guid.NewGuid(); var addPageModuleCommand = new AddPageModule { SiteId = siteId, PageId = pageId, ModuleId = moduleId, PageModuleId = Guid.NewGuid(), Title = "Title", Zone = "Zone" }; var addPageModuleValidatorMock = new Mock <IValidator <AddPageModule> >(); addPageModuleValidatorMock.Setup(x => x.Validate(addPageModuleCommand)).Returns(new ValidationResult()); _page.AddModule(addPageModuleCommand, addPageModuleValidatorMock.Object); _command = new UpdatePageModuleDetails { SiteId = siteId, PageId = pageId, ModuleId = moduleId, Title = "New Title", InheritPermissions = true, PageModuleLocalisations = new List <PageModuleLocalisation> { new PageModuleLocalisation { LanguageId = Guid.NewGuid(), Title = "Title" } }, PageModulePermissions = new List <PageModulePermission> { new PageModulePermission { RoleId = Everyone.Id, Type = PermissionType.View } } }; _validatorMock = new Mock <IValidator <UpdatePageModuleDetails> >(); _validatorMock.Setup(x => x.Validate(_command)).Returns(new ValidationResult()); _page.UpdateModule(_command, _validatorMock.Object); _pageModule = _page.PageModules.FirstOrDefault(x => x.ModuleId == moduleId); _event = _page.Events.OfType <PageModuleDetailsUpdated>().SingleOrDefault(); }
public void Should_have_validation_error_when_site_id_is_empty() { var command = new AddPageModule { SiteId = Guid.Empty }; var moduleRulesMock = new Mock <IModuleRules>(); var siteRulesMock = new Mock <ISiteRules>(); var validator = new AddPageModuleValidator(siteRulesMock.Object, moduleRulesMock.Object); validator.ShouldHaveValidationErrorFor(x => x.SiteId, command); }
public void Should_have_validation_error_when_site_does_not_exist() { var command = new AddPageModule { SiteId = Guid.NewGuid() }; var moduleRulesMock = new Mock <IModuleRules>(); var siteRulesMock = new Mock <ISiteRules>(); siteRulesMock.Setup(x => x.DoesSiteExist(command.SiteId)).Returns(false); var validator = new AddPageModuleValidator(siteRulesMock.Object, moduleRulesMock.Object); validator.ShouldHaveValidationErrorFor(x => x.SiteId, command); }
public void Setup() { _command = new AddPageModule { SiteId = Guid.NewGuid(), PageId = Guid.NewGuid(), ModuleId = Guid.NewGuid(), Id = Guid.NewGuid(), Title = "Title", Zone = "Zone", SortOrder = 1 }; _validatorMock = new Mock <IValidator <AddPageModule> >(); _validatorMock.Setup(x => x.Validate(_command)).Returns(new ValidationResult()); _page = new Page(); _page.AddModule(_command, _validatorMock.Object); _event = _page.Events.OfType <PageModuleAdded>().SingleOrDefault(); _pageModule = _page.PageModules.FirstOrDefault(x => x.Id == _command.Id); }
public IActionResult AddModule([FromBody] AddModuleModel model) { var defaultViewRoleIds = new List <Guid> { Administrator.Id }; var defaultEditRoleIds = new List <Guid> { Administrator.Id }; model.SetPageModulePermissions(defaultViewRoleIds, defaultEditRoleIds); model.SiteId = SiteId; var moduleId = Guid.NewGuid(); var createModule = new CreateModule { SiteId = model.SiteId, ModuleTypeId = model.ModuleTypeId, Id = moduleId, Title = model.Title }; _dispatcher.SendAndPublish <CreateModule, Module>(createModule); var addPageModule = new AddPageModule { SiteId = model.SiteId, PageId = model.PageId, ModuleId = moduleId, PageModuleId = Guid.NewGuid(), Title = model.Title, Zone = model.Zone, SortOrder = model.SortOrder, PageModulePermissions = model.PageModulePermissions }; _dispatcher.SendAndPublish <AddPageModule, Page>(addPageModule); return(new NoContentResult()); }
public void AddModule(AddPageModule cmd, IValidator <AddPageModule> validator) { validator.ValidateCommand(cmd); AddModule(new PageModule(cmd.PageId, cmd.PageModuleId, cmd.ModuleId, cmd.Title, cmd.Zone, cmd.SortOrder, cmd.PageModulePermissions)); }