package org.fenixedu.cms.domain; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Locale; import org.fenixedu.bennu.core.domain.Bennu; import org.fenixedu.bennu.core.domain.User; import org.fenixedu.commons.StringNormalizer; import org.fenixedu.commons.i18n.LocalizedString; import org.joda.time.DateTime; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.FenixFrameworkRunner; @RunWith(FenixFrameworkRunner.class) public class TestSite extends TestCMS { @Test public void createSite() { User user = CmsTestUtils.createAuthenticatedUser("createSite"); String methodName = "createSite"; LocalizedString siteName = new LocalizedString(Locale.UK, "site name uk " + methodName).with(Locale.US, "site name us " + methodName); LocalizedString siteDescription = new LocalizedString(Locale.UK, "site description uk " + methodName).with(Locale.US, "site description us " + methodName); Site site = new Site(siteName, siteDescription); DateTime dt = new DateTime(); assertEquals(siteName, site.getName()); assertEquals(siteDescription, site.getDescription()); assertEquals(null, site.getAlternativeSite()); assertEquals(null, site.getStyle()); assertEquals("slug should be initialized using site name", StringNormalizer.slugify(siteName.getContent()), site.getSlug()); assertEquals(false, site.getPublished()); assertEquals(null, site.getAnalyticsCode()); assertEquals(null, site.getThemeType()); assertTrue(equalDates(dt, site.getCreationDate())); assertEquals(null, site.getTheme()); assertTrue(site.getCategoriesSet().isEmpty()); assertTrue(site.getMenusSet().isEmpty()); assertTrue(site.getPostSet().isEmpty()); assertTrue(site.getPagesSet().isEmpty()); assertEquals(Bennu.getInstance(), site.getBennu()); assertEquals(null, site.getFolder()); assertEquals(null, site.getFunctionality()); assertEquals(user, site.getCreatedBy()); } @Test public void addSitePosts() { User user = CmsTestUtils.createAuthenticatedUser("addSitePosts"); Site site = CmsTestUtils.createSite(user, "addSitePosts"); DateTime dt = new DateTime(); LocalizedString siteName = site.getName(); LocalizedString siteDescription = site.getDescription(); Post post1 = new Post(site); Post post2 = new Post(site); assertEquals(siteName, siteName); assertEquals(siteDescription, siteDescription); assertEquals(null, site.getAlternativeSite()); assertEquals(null, site.getStyle()); assertEquals(StringNormalizer.slugify(siteName.getContent()), site.getSlug()); assertEquals(false, site.getPublished()); assertEquals(null, site.getAnalyticsCode()); assertEquals(null, site.getThemeType()); assertTrue(equalDates(dt, site.getCreationDate())); assertEquals(null, site.getTheme()); assertTrue(site.getCategoriesSet().isEmpty()); assertTrue(site.getMenusSet().isEmpty()); assertEquals(2, site.getPostSet().size()); assertTrue(site.getPostSet().contains(post1) && site.getPostSet().contains(post2)); assertTrue(site.getPagesSet().isEmpty()); assertEquals(Bennu.getInstance(), site.getBennu()); assertEquals(null, site.getFolder()); assertEquals(null, site.getFunctionality()); assertEquals(user, site.getCreatedBy()); } @Test public void addSitePages() { User user = CmsTestUtils.createAuthenticatedUser("addSitePages"); Site site = CmsTestUtils.createSite(user, "addSitePages"); DateTime dt = new DateTime(); LocalizedString siteName = site.getName(); LocalizedString siteDescription = site.getDescription(); Page page1 = new Page(site, CmsTestUtils.createLocalizedString("addSitePages1")); Page page2 = new Page(site, CmsTestUtils.createLocalizedString("addSitePages2")); assertEquals(siteName, siteName); assertEquals(siteDescription, siteDescription); assertEquals(null, site.getAlternativeSite()); assertEquals(null, site.getStyle()); assertEquals(StringNormalizer.slugify(siteName.getContent()), site.getSlug()); assertEquals(false, site.getPublished()); assertEquals(null, site.getAnalyticsCode()); assertEquals(null, site.getThemeType()); assertTrue(equalDates(dt, site.getCreationDate())); assertEquals(null, site.getTheme()); assertTrue(site.getCategoriesSet().isEmpty()); assertTrue(site.getMenusSet().isEmpty()); assertTrue(site.getPostSet().isEmpty()); assertEquals(2, site.getPagesSet().size()); assertTrue(site.getPagesSet().contains(page1) && site.getPagesSet().contains(page2)); assertEquals(Bennu.getInstance(), site.getBennu()); assertEquals(null, site.getFolder()); assertEquals(null, site.getFunctionality()); assertEquals(user, site.getCreatedBy()); } @Test public void addSiteCategories() { User user = CmsTestUtils.createAuthenticatedUser("addSiteCategories"); Site site = CmsTestUtils.createSite(user, "addSiteCategories"); DateTime dt = new DateTime(); LocalizedString siteName = site.getName(); LocalizedString siteDescription = site.getDescription(); Category cat1 = new Category(site, CmsTestUtils.createLocalizedString("addSiteCategories1")); Category cat2 = new Category(site, CmsTestUtils.createLocalizedString("addSiteCategories1")); assertEquals(siteName, siteName); assertEquals(siteDescription, siteDescription); assertEquals(null, site.getAlternativeSite()); assertEquals(null, site.getStyle()); assertEquals(StringNormalizer.slugify(siteName.getContent()), site.getSlug()); assertEquals(false, site.getPublished()); assertEquals(null, site.getAnalyticsCode()); assertEquals(null, site.getThemeType()); assertTrue(equalDates(dt, site.getCreationDate())); assertEquals(null, site.getTheme()); assertTrue(site.getPagesSet().isEmpty()); assertTrue(site.getMenusSet().isEmpty()); assertTrue(site.getPostSet().isEmpty()); assertEquals(2, site.getCategoriesSet().size()); assertTrue(site.getCategoriesSet().contains(cat1) && site.getCategoriesSet().contains(cat2)); assertEquals(Bennu.getInstance(), site.getBennu()); assertEquals(null, site.getFolder()); assertEquals(null, site.getFunctionality()); assertEquals(user, site.getCreatedBy()); } @Test public void addSiteMenus() { User user = CmsTestUtils.createAuthenticatedUser("addSiteMenus"); Site site = CmsTestUtils.createSite(user, "addSiteMenus"); DateTime dt = new DateTime(); LocalizedString siteName = site.getName(); LocalizedString siteDescription = site.getDescription(); Menu menu1 = new Menu(site, CmsTestUtils.createLocalizedString("addSiteMenus1")); Menu menu2 = new Menu(site, CmsTestUtils.createLocalizedString("addSiteMenus2")); assertEquals(siteName, siteName); assertEquals(siteDescription, siteDescription); assertEquals(null, site.getAlternativeSite()); assertEquals(null, site.getStyle()); assertEquals(StringNormalizer.slugify(siteName.getContent()), site.getSlug()); assertEquals(false, site.getPublished()); assertEquals(null, site.getAnalyticsCode()); assertEquals(null, site.getThemeType()); assertTrue(equalDates(dt, site.getCreationDate())); assertEquals(null, site.getTheme()); assertTrue(site.getCategoriesSet().isEmpty()); assertTrue(site.getPagesSet().isEmpty()); assertTrue(site.getPostSet().isEmpty()); assertEquals(2, site.getMenusSet().size()); assertTrue(site.getMenusSet().contains(menu1) && site.getMenusSet().contains(menu2)); assertEquals(Bennu.getInstance(), site.getBennu()); assertEquals(null, site.getFolder()); assertEquals(null, site.getFunctionality()); assertEquals(user, site.getCreatedBy()); } @Test public void getSiteFromSlug() { User user = CmsTestUtils.createAuthenticatedUser("getSiteFromSlug"); Site site = CmsTestUtils.createSite(user, "getSiteFromSlug"); Site slugSite = Site.fromSlug(site.getSlug()); assertEquals(site, slugSite); } @Test public void getPageFromSlug() { User user = CmsTestUtils.createAuthenticatedUser("getPageFromSlug"); Site site = CmsTestUtils.createSite(user, "getPageFromSlug"); Page page = CmsTestUtils.createPage(site, "getPageFromSlug"); Page slugPage = site.pageForSlug(page.getSlug()); assertEquals(page, slugPage); } @Test public void getPostFromSlug() { User user = CmsTestUtils.createAuthenticatedUser("getPostFromSlug"); Site site = CmsTestUtils.createSite(user, "getPostFromSlug"); Post post = CmsTestUtils.createPost(site, "getPostFromSlug"); Post slugPost = site.postForSlug(post.getSlug()); assertEquals(post, slugPost); } @Test public void getCategoryFromSlug() { User user = CmsTestUtils.createAuthenticatedUser("getCategoryFromSlug"); Site site = CmsTestUtils.createSite(user, "getCategoryFromSlug"); Category category = CmsTestUtils.createCategory(site, "getCategoryFromSlug"); Category slugCategory = site.categoryForSlug(category.getSlug()); assertEquals(category, slugCategory); } @Test public void getUnexistentCategoryFromSlug() { User user = CmsTestUtils.createAuthenticatedUser("getUnexistentCategoryFromSlug"); Site site = CmsTestUtils.createSite(user, "getUnexistentCategoryFromSlug"); String slugRandom = "randomxptoslug"; Category category1 = site.getOrCreateCategoryForSlug(slugRandom, CmsTestUtils.createLocalizedString("getUnexistentCategoryFromSlug")); assertTrue(category1 != null); assertEquals(slugRandom, category1.getSlug()); String slugRandomError = "random slug"; Category category2 = site.getOrCreateCategoryForSlug(slugRandomError, CmsTestUtils.createLocalizedString("getUnexistentCategoryFromSlug")); assertTrue(category2 != null); assertEquals(StringNormalizer.slugify(slugRandomError), category2.getSlug()); } }