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"); }); }
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); }); }