Example #1
0
        public void Should_Insert_And_Retrieve_Page_PageContents_Successfully()
        {
            var page = TestDataProvider.CreateNewPage();

            var pageContents = new[]
            {
                TestDataProvider.CreateNewPageContent(null, page),
                TestDataProvider.CreateNewPageContent(null, page),
                TestDataProvider.CreateNewPageContent(null, page)
            };

            page.PageContents = pageContents;

            var pageOptions = new[]
            {
                TestDataProvider.CreateNewPageOption(page),
                TestDataProvider.CreateNewPageOption(page),
                TestDataProvider.CreateNewPageOption(page)
            };

            page.Options = pageOptions;

            SaveEntityAndRunAssertionsInTransaction(
                page,
                result =>
            {
                Assert.AreEqual(page, result);
                Assert.AreEqual(pageContents.OrderBy(f => f.Id), result.PageContents.OrderBy(f => f.Id));
            });
        }
Example #2
0
        public void Should_Return_Highest_AccessLevel_Based_On_Role()
        {
            RunActionInTransaction(session =>
            {
                var accessRules = new List <AccessRule>(new[] {
                    new AccessRule {
                        Identity = "RoleA", AccessLevel = AccessLevel.Deny, IsForRole = true
                    },
                    new AccessRule {
                        Identity = "Admin", AccessLevel = AccessLevel.ReadWrite, IsForRole = true
                    },
                    new AccessRule {
                        Identity = "RoleB", AccessLevel = AccessLevel.Read, IsForRole = true
                    }
                });

                var page = TestDataProvider.CreateNewPage();
                accessRules.ForEach(page.AddRule);

                session.SaveOrUpdate(page);
                session.Flush();
                session.Clear();

                var service = CreateAccessControlService();

                var principal   = new GenericPrincipal(new GenericIdentity("John"), new[] { "Admin" });
                var accessLevel = service.GetAccessLevel(page, principal);

                Assert.AreEqual(AccessLevel.ReadWrite, accessLevel);
            });
        }
        public void Should_CRUD_PageProperties_WithMasterPage_Successfully()
        {
            changingPageProepertiesCount = 0;

            // Attach to events
            Events.PageEvents.Instance.PageCreated            += Instance_EntityCreated;
            Events.PageEvents.Instance.PagePropertiesChanging += Instance_PagePropertiesChanging;
            Events.PageEvents.Instance.PagePropertiesChanged  += Instance_EntityUpdated;
            Events.PageEvents.Instance.PageDeleted            += Instance_EntityDeleted;

            RunApiActionInTransaction(
                (api, session) =>
            {
                masterPage = TestDataProvider.CreateNewPage();
                masterPage.IsMasterPage = true;
                layout = null;
                region = TestDataProvider.CreateNewRegion();
                session.SaveOrUpdate(region);
                session.SaveOrUpdate(masterPage);

                Run(session, api.Pages.Page.Properties.Post, api.Pages.Page.Properties.Get, api.Pages.Page.Properties.Put, api.Pages.Page.Properties.Delete);
            });

            Assert.AreEqual(1, changingPageProepertiesCount, "Page properties changing events fired count");

            // Detach from events
            Events.PageEvents.Instance.PageCreated            -= Instance_EntityCreated;
            Events.PageEvents.Instance.PagePropertiesChanging -= Instance_PagePropertiesChanging;
            Events.PageEvents.Instance.PagePropertiesChanged  -= Instance_EntityUpdated;
            Events.PageEvents.Instance.PageDeleted            -= Instance_EntityDeleted;
        }
Example #4
0
        public void Should_Insert_HtmlWidget_To_Page_Successfully()
        {
            // Create html content
            var widget = TestDataProvider.CreateNewHtmlContentWidget();

            widget.Status = ContentStatus.Published;

            var page        = TestDataProvider.CreateNewPage();
            var region      = TestDataProvider.CreateNewRegion();
            var pageContent = TestDataProvider.CreateNewPageContent(widget, page, region);

            pageContent.Order = TestDataProvider.ProvideRandomNumber(1, 99999);

            // Mock
            var repository = new Mock <IRepository>();

            repository
            .Setup(r => r.AsProxy <Page>(It.IsAny <Guid>()))
            .Returns(TestDataProvider.CreateNewPage());
            repository
            .Setup(r => r.AsProxy <Region>(It.IsAny <Guid>()))
            .Returns(TestDataProvider.CreateNewRegion());
            repository
            .Setup(r => r.AsQueryable <PageContent>())
            .Returns(new List <PageContent> {
                pageContent
            }.AsQueryable());
            repository
            .Setup(r => r.Save(It.IsAny <PageContent>()))
            .Callback <PageContent>(pc =>
            {
                Assert.AreEqual(pc.Order, pageContent.Order + 1);
            });

            // Create command
            var command = new InsertContentToPageCommand();

            command.UnitOfWork = new Mock <IUnitOfWork>().Object;
            command.Repository = repository.Object;

            // Execute
            var request = new InsertContentToPageRequest {
                ContentId = widget.Id, PageId = page.Id, RegionId = region.Id
            };
            var result = command.Execute(request);

            Assert.IsNotNull(result);
            Assert.IsTrue(result);
        }
Example #5
0
        public void Should_Get_Page_Access_Control()
        {
            RunActionInTransaction(session =>
            {
                var accessRule = TestDataProvider.CreateNewAccessRule();
                var page       = TestDataProvider.CreateNewPage();
                page.AddRule(accessRule);

                session.SaveOrUpdate(page);
                session.Flush();

                var accessControlService = CreateAccessControlService();

                var level = accessControlService.GetAccessLevel(page, new GenericPrincipal(new GenericIdentity(accessRule.Identity), null));

                Assert.AreEqual(accessRule.AccessLevel, level);
            });
        }
        public void Should_CRUD_BlogPost_WithMasterPage_Successfully()
        {
            // Attach to events
            Events.BlogEvents.Instance.BlogCreated += Instance_EntityCreated;
            Events.BlogEvents.Instance.BlogUpdated += Instance_EntityUpdated;
            Events.BlogEvents.Instance.BlogDeleted += Instance_EntityDeleted;

            RunApiActionInTransaction(
                (api, session) =>
            {
                isMarkdown = false;
                isHtmlSet  = true;
                isNullUrl  = false;

                masterPage = TestDataProvider.CreateNewPage();
                masterPage.IsMasterPage = true;
                layout = null;

                var htmlContent   = TestDataProvider.CreateNewHtmlContent(100);
                region            = TestDataProvider.CreateNewRegion();
                var contentRegion = new ContentRegion {
                    Content = htmlContent, Region = region
                };
                htmlContent.ContentRegions = new[] { contentRegion };

                var pageContent = new PageContent {
                    Page = masterPage, Content = htmlContent, Region = region
                };

                session.SaveOrUpdate(region);
                session.SaveOrUpdate(htmlContent);
                session.SaveOrUpdate(masterPage);
                session.SaveOrUpdate(pageContent);

                Run(session, api.Blog.BlogPost.Properties.Post, api.Blog.BlogPost.Properties.Get, api.Blog.BlogPost.Properties.Put, api.Blog.BlogPost.Properties.Delete);
            });

            // Detach from events
            Events.BlogEvents.Instance.BlogCreated -= Instance_EntityCreated;
            Events.BlogEvents.Instance.BlogUpdated -= Instance_EntityUpdated;
            Events.BlogEvents.Instance.BlogDeleted -= Instance_EntityDeleted;
        }
        public void Should_Insert_And_Retrieve_Layout_Pages_Successfully()
        {
            var layout = TestDataProvider.CreateNewLayout();
            var pages  = new[]
            {
                TestDataProvider.CreateNewPage(layout),
                TestDataProvider.CreateNewPage(layout),
                TestDataProvider.CreateNewPage(layout)
            };

            layout.Pages = pages;

            SaveEntityAndRunAssertionsInTransaction(
                layout,
                result =>
            {
                Assert.AreEqual(layout, result);
                Assert.AreEqual(pages.OrderBy(f => f.Id), result.Pages.OrderBy(f => f.Id));
            });
        }
Example #8
0
        public void Should_Insert_And_Retrieve_Page_Successfully()
        {
            var entity = TestDataProvider.CreateNewPage();

            RunEntityMapTestsInTransaction(entity);
        }
Example #9
0
        public void Should_Insert_HtmlWidget_To_Page_Successfully()
        {
            // Create html content
            var widget = TestDataProvider.CreateNewHtmlContentWidget();

            widget.Status = ContentStatus.Published;

            var page        = TestDataProvider.CreateNewPage();
            var region      = TestDataProvider.CreateNewRegion();
            var pageContent = TestDataProvider.CreateNewPageContent(widget, page, region);

            pageContent.Order   = TestDataProvider.ProvideRandomNumber(1, 99999);
            pageContent.Id      = Guid.NewGuid();
            pageContent.Version = 10;
            widget.Version      = 20;

            // Mock content Service
            var contentService = new Mock <IContentService>();

            contentService
            .Setup(r => r.GetPageContentNextOrderNumber(It.IsAny <Guid>(), It.IsAny <Guid?>()))
            .Returns(pageContent.Order + 1);

            // Mock
            var repository = new Mock <IRepository>();

            repository
            .Setup(r => r.AsProxy <Page>(It.IsAny <Guid>()))
            .Returns(TestDataProvider.CreateNewPage());
            repository
            .Setup(r => r.AsProxy <Region>(It.IsAny <Guid>()))
            .Returns(TestDataProvider.CreateNewRegion());
            repository
            .Setup(r => r.AsQueryable <PageContent>())
            .Returns(new List <PageContent> {
                pageContent
            }.AsQueryable());
            repository
            .Setup(r => r.AsQueryable <Content>())
            .Returns(new List <Content> {
                widget
            }.AsQueryable());
            repository
            .Setup(r => r.Save(It.IsAny <PageContent>()))
            .Callback <PageContent>(pc =>
            {
                Assert.AreEqual(pc.Order, pageContent.Order + 1);
                pc.Id      = pageContent.Id;
                pc.Version = pageContent.Version;
            });

            // Create command
            var command = new InsertContentToPageCommand(contentService.Object,
                                                         new FakePageContentProjectionFactory(null, null),
                                                         new Mock <IWidgetService>().Object);

            command.UnitOfWork = new Mock <IUnitOfWork>().Object;
            command.Repository = repository.Object;

            // Execute
            var request = new InsertContentToPageRequest {
                ContentId = widget.Id, PageId = page.Id, RegionId = region.Id
            };
            var result = command.Execute(request);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.PageContentId, pageContent.Id);
            Assert.AreEqual(result.PageId, page.Id);
            Assert.AreEqual(result.ContentId, widget.Id);
            Assert.AreEqual(result.ContentType, "html-widget");
            Assert.AreEqual(result.ContentVersion, widget.Version);
            Assert.AreEqual(result.PageContentVersion, pageContent.Version);
            Assert.AreEqual(result.Title, widget.Name);
            Assert.AreEqual(result.RegionId, region.Id);
            Assert.AreEqual(result.DesirableStatus, widget.Status);
        }