package org.fenixedu.cms.domain; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.fenixedu.bennu.core.domain.User; import org.joda.time.DateTime; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.FenixFrameworkRunner; @RunWith(FenixFrameworkRunner.class) public class TestPost extends TestCMS { @Test public void createPost() { User user = CmsTestUtils.createAuthenticatedUser("createPost"); Site site = CmsTestUtils.createSite(user, "createPost"); Post post = new Post(site); DateTime dt = new DateTime(); assertEquals(null, post.getName()); assertEquals(null, post.getSlug()); assertEquals(null, post.getPublicationBegin()); assertEquals(null, post.getPublicationEnd()); assertEquals(null, post.getLocation()); assertEquals(null, post.getMetadata()); assertEquals(false, post.getActive()); assertTrue(equalDates(dt, post.getCreationDate())); assertTrue(equalDates(dt, post.getModificationDate())); assertEquals(user, post.getCreatedBy()); assertEquals(site, post.getSite()); assertTrue(post.getCategoriesSet().isEmpty()); assertTrue(post.getComponentSet().isEmpty()); assertTrue(post.getFilesSet().isEmpty()); assertTrue(post.getRevisionsSet().isEmpty()); } @Test public void checkValidSlug() { User user = CmsTestUtils.createAuthenticatedUser("checkValidSlug"); Site site = CmsTestUtils.createSite(user, "checkValidSlug"); Post post1 = CmsTestUtils.createPost(site, "checkValidSlug1"); Post post2 = CmsTestUtils.createPost(site, "checkValidSlug2"); assertTrue(post1.isValidSlug("xpto")); assertTrue(post1.isValidSlug(post1.getSlug())); assertFalse(post1.isValidSlug(post2.getSlug())); } @Test public void hasPublicationPeriod() { User user = CmsTestUtils.createAuthenticatedUser("hasPublicationPeriod"); Site site = CmsTestUtils.createSite(user, "hasPublicationPeriod"); Post post = CmsTestUtils.createPost(site, "hasPublicationPeriod"); assertEquals(null, post.getPublicationBegin()); assertEquals(null, post.getPublicationEnd()); assertFalse(post.hasPublicationPeriod()); DateTime dt = new DateTime(); post.setPublicationBegin(dt); assertEquals(dt, post.getPublicationBegin()); assertEquals(null, post.getPublicationEnd()); assertFalse(post.hasPublicationPeriod()); post.setPublicationBegin(null); post.setPublicationEnd(dt); assertEquals(null, post.getPublicationBegin()); assertEquals(dt, post.getPublicationEnd()); assertFalse(post.hasPublicationPeriod()); post.setPublicationBegin(dt); assertEquals(dt, post.getPublicationBegin()); assertEquals(dt, post.getPublicationEnd()); assertTrue(post.hasPublicationPeriod()); } @Test public void inPublicationPeriod() { /* * publicationBegin and publicationEnd may have 3 values each: * null, * a date before now, * a date after now. * * need to check 3x3 combinations */ User user = CmsTestUtils.createAuthenticatedUser("inPublicationPeriod"); Site site = CmsTestUtils.createSite(user, "inPublicationPeriod"); Post post = CmsTestUtils.createPost(site, "inPublicationPeriod"); assertEquals(null, post.getPublicationBegin()); assertEquals(null, post.getPublicationEnd()); assertTrue(post.isInPublicationPeriod()); DateTime before = new DateTime(2000, 1, 1, 1, 1); DateTime after = new DateTime(2050, 1, 1, 1, 1); post.setPublicationBegin(before); assertEquals(before, post.getPublicationBegin()); assertEquals(null, post.getPublicationEnd()); assertTrue(post.isInPublicationPeriod()); post.setPublicationBegin(after); assertEquals(after, post.getPublicationBegin()); assertEquals(null, post.getPublicationEnd()); assertFalse(post.isInPublicationPeriod()); post.setPublicationBegin(null); post.setPublicationEnd(before); assertEquals(null, post.getPublicationBegin()); assertEquals(before, post.getPublicationEnd()); assertFalse(post.isInPublicationPeriod()); post.setPublicationBegin(before); assertEquals(before, post.getPublicationBegin()); assertEquals(before, post.getPublicationEnd()); assertFalse(post.isInPublicationPeriod()); post.setPublicationBegin(after); assertEquals(after, post.getPublicationBegin()); assertEquals(before, post.getPublicationEnd()); assertFalse(post.isInPublicationPeriod()); post.setPublicationBegin(null); post.setPublicationEnd(after); assertEquals(null, post.getPublicationBegin()); assertEquals(after, post.getPublicationEnd()); assertTrue(post.isInPublicationPeriod()); post.setPublicationBegin(before); assertEquals(before, post.getPublicationBegin()); assertEquals(after, post.getPublicationEnd()); assertTrue(post.isInPublicationPeriod()); post.setPublicationBegin(after); assertEquals(after, post.getPublicationBegin()); assertEquals(after, post.getPublicationEnd()); assertFalse(post.isInPublicationPeriod()); } @Test public void visibility() { /* * isVisible depends on 3 boolean values: * getActive * hasPublicationPeriod * isInPublicationPeriod * * need to check 2x2x2 combinations */ User user = CmsTestUtils.createAuthenticatedUser("visibility"); Site site = CmsTestUtils.createSite(user, "visibility"); Post post = CmsTestUtils.createPost(site, "visibility"); DateTime before = new DateTime(2000, 1, 1, 1, 1); DateTime after = new DateTime(2050, 1, 1, 1, 1); post.setPublicationBegin(after); assertFalse(post.getActive()); assertFalse(post.hasPublicationPeriod()); assertFalse(post.isInPublicationPeriod()); assertFalse(post.isVisible()); post.setPublicationBegin(null); assertFalse(post.getActive()); assertFalse(post.hasPublicationPeriod()); assertTrue(post.isInPublicationPeriod()); assertFalse(post.isVisible()); post.setPublicationBegin(after); post.setPublicationEnd(before); assertFalse(post.getActive()); assertTrue(post.hasPublicationPeriod()); assertFalse(post.isInPublicationPeriod()); assertFalse(post.isVisible()); post.setPublicationBegin(before); post.setPublicationEnd(after); assertFalse(post.getActive()); assertTrue(post.hasPublicationPeriod()); assertTrue(post.isInPublicationPeriod()); assertFalse(post.isVisible()); post.setActive(true); post.setPublicationBegin(after); post.setPublicationEnd(null); assertTrue(post.getActive()); assertFalse(post.hasPublicationPeriod()); assertFalse(post.isInPublicationPeriod()); assertTrue(post.isVisible()); post.setPublicationBegin(null); assertTrue(post.getActive()); assertFalse(post.hasPublicationPeriod()); assertTrue(post.isInPublicationPeriod()); assertTrue(post.isVisible()); post.setPublicationBegin(after); post.setPublicationEnd(before); assertTrue(post.getActive()); assertTrue(post.hasPublicationPeriod()); assertFalse(post.isInPublicationPeriod()); assertFalse(post.isVisible()); post.setPublicationBegin(before); post.setPublicationEnd(after); assertTrue(post.getActive()); assertTrue(post.hasPublicationPeriod()); assertTrue(post.isInPublicationPeriod()); assertTrue(post.isVisible()); } }