示例#1
0
        public void Should_Clone_Page_With_Tags_Options_Contents_AccessRules()
        {
            RunActionInTransaction(session =>
            {
                const string url = "/test-link";
                var uow          = new DefaultUnitOfWork(session);
                var repository   = new DefaultRepository(uow);


                var pageToClone = TestDataProvider.CreateNewPageWithTagsContentsOptionsAndAccessRules(session, 2, 2, 2, 2);

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

                var pageService = new Mock <IPageService>();
                pageService.Setup(f => f.ValidatePageUrl(It.IsAny <string>(), It.IsAny <Guid?>()));
                pageService.Setup(f => f.CreatePagePermalink(It.IsAny <string>(), It.IsAny <string>())).Returns(url);

                var urlService = new Mock <IUrlService>();
                urlService.Setup(f => f.FixUrl(It.IsAny <string>())).Returns(url);

                var rules = new List <IAccessRule>();
                var rule1 = TestDataProvider.CreateNewAccessRule();
                rules.Add(rule1);
                var rule2 = TestDataProvider.CreateNewAccessRule();
                rules.Add(rule2);

                var command                  = new ClonePageCommand();
                command.Repository           = repository;
                command.UnitOfWork           = uow;
                command.PageService          = pageService.Object;
                command.UrlService           = urlService.Object;
                command.AccessControlService = new Mock <IAccessControlService>().Object;
                command.Context              = new Mock <ICommandContext>().Object;

                var result = command.Execute(new ClonePageViewModel
                {
                    PageId         = pageToClone.Id,
                    PageTitle      = "new cloned page",
                    PageUrl        = url,
                    UserAccessList = pageToClone.AccessRules.Select(u => new UserAccessViewModel(u)).ToList()
                });

                Assert.IsNotNull(result);
                session.Clear();

                var actual = repository.AsQueryable <PageProperties>().Where(f => f.Id == result.PageId).ToList().FirstOrDefault();

                Assert.IsNotNull(actual);
                Assert.AreEqual(2, actual.AccessRules.Count(), "AccessRules");
                Assert.AreEqual(2, actual.PageTags.Count(), "Tags");
                Assert.AreEqual(2, actual.PageContents.Count(), "Contents");
                Assert.AreEqual(2, actual.Options.Count(), "Options");
            });
        }
示例#2
0
        public void Sould_Delete_Page_Successfully()
        {
            RunActionInTransaction(session =>
            {
                const string url = "/test-link/";
                var uow          = new DefaultUnitOfWork(session);
                var repository   = new DefaultRepository(uow);

                var page = TestDataProvider.CreateNewPageWithTagsContentsOptionsAndAccessRules(session);

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

                var pageService = new Mock <IPageService>();
                pageService.Setup(f => f.ValidatePageUrl(It.IsAny <string>(), It.IsAny <Guid?>()));
                pageService.Setup(f => f.CreatePagePermalink(It.IsAny <string>(), It.IsAny <string>())).Returns(url);

                var sitemapService = new Mock <ISitemapService>();
                sitemapService
                .Setup(service => service.GetNodesByPage(It.IsAny <PageProperties>()))
                .Returns(() => new List <SitemapNode>());

                var urlService = new Mock <IUrlService>();
                urlService.Setup(f => f.FixUrl(It.IsAny <string>())).Returns((string a) => a);

                var securityService = new Mock <ICmsSecurityConfiguration>();
                securityService.Setup(f => f.AccessControlEnabled).Returns(false);

                var configurationService = new Mock <ICmsConfiguration>();
                configurationService.Setup(f => f.Security).Returns(securityService.Object);

                var command        = new DeletePageCommand(null, sitemapService.Object, urlService.Object, configurationService.Object);
                command.Repository = repository;
                command.UnitOfWork = uow;

                var result = command.Execute(new DeletePageViewModel
                {
                    PageId        = page.Id,
                    UpdateSitemap = false,
                    RedirectUrl   = null,
                    SecurityWord  = "DELETE",
                    Version       = page.Version
                });

                Assert.IsTrue(result);
                session.Clear();

                var actual = repository.AsQueryable <PageProperties>().FirstOrDefault(f => f.Id == page.Id && !f.IsDeleted);
                Assert.IsNull(actual);
            });
        }