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();
        }
Example #3
0
        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);
        }
Example #4
0
        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));
        }
Example #5
0
        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>()));
        }
Example #7
0
        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);
        }
Example #10
0
 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);
 }
Example #11
0
        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());
        }
Example #12
0
        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));
        }