/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.content;
import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.Period;
import org.junit.Test;
import static org.junit.Assert.*;
public class ContentEntityTest
{
@Test
public void testAssignmentOverdue()
{
ContentEntity content = new ContentEntity();
Date assignmentDate = new DateTime().minus( new Period().withSeconds( 2 ) ).toDate();
content.setAssignmentDueDate( assignmentDate );
assertTrue( content.isAssignmentOverdue() );
assignmentDate = new DateTime().plus( new Period().withHours( 2 ) ).toDate();
content.setAssignmentDueDate( assignmentDate );
assertFalse( content.isAssignmentOverdue() );
}
@Test
public void testIsAvailableWhenOnlyPublishFromIsSet()
{
DateTime publishFrom = new DateTime( 2008, 12, 1, 16, 0, 0, 0 );
ContentEntity content = new ContentEntity();
ContentVersionEntity version = new ContentVersionEntity();
version.setKey( new ContentVersionKey( 101 ) );
version.setStatus( ContentStatus.APPROVED );
content.setDeleted( false );
content.setAvailableFrom( publishFrom.toDate() );
content.setMainVersion( version );
version.setContent( content );
Date date = new DateTime( 2008, 12, 1, 16, 0, 0, 0 ).toDate();
assertTrue( content.isOnline( date ) );
assertTrue( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISHED );
date = new DateTime( 2008, 12, 1, 16, 11, 0, 0 ).toDate();
assertTrue( content.isOnline( date ) );
assertTrue( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISHED );
date = new DateTime( 2008, 12, 1, 10, 0, 0, 0 ).toDate();
assertFalse( content.isOnline( date ) );
assertFalse( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISHED );
assertTrue( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISH_WAITING );
date = new DateTime( 2008, 12, 1, 15, 59, 59, 999 ).toDate();
assertFalse( content.isOnline( date ) );
assertFalse( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISHED );
assertTrue( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISH_WAITING );
}
@Test
public void testIsAvailableWhenBothPublishFromAndToIsSet()
{
DateTime publishFrom = new DateTime( 2008, 12, 1, 16, 0, 0, 0 );
DateTime publishTo = new DateTime( 2008, 12, 2, 12, 0, 0, 0 );
ContentEntity content = new ContentEntity();
ContentVersionEntity version = new ContentVersionEntity();
version.setKey( new ContentVersionKey( 101 ) );
version.setStatus( ContentStatus.APPROVED );
content.setDeleted( false );
content.setAvailableFrom( publishFrom.toDate() );
content.setAvailableTo( publishTo.toDate() );
content.setMainVersion( version );
version.setContent( content );
Date date = new DateTime( 2008, 12, 1, 16, 0, 0, 0 ).toDate();
assertTrue( content.isOnline( date ) );
assertTrue( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISHED );
date = new DateTime( 2008, 12, 1, 15, 59, 59, 999 ).toDate();
assertFalse( content.isOnline( date ) );
assertFalse( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISHED );
assertTrue( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISH_WAITING );
date = new DateTime( 2008, 12, 2, 12, 0, 0, 0 ).toDate();
assertFalse( content.isOnline( date ) );
assertFalse( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISHED );
assertTrue( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISH_EXPIRED );
date = new DateTime( 2008, 12, 2, 12, 0, 0, 1 ).toDate();
assertFalse( content.isOnline( date ) );
assertFalse( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISHED );
assertTrue( content.getMainVersion().getState( date ) == ContentVersionEntity.STATE_PUBLISH_EXPIRED );
}
@Test
public void testPublishTo()
{
DateTime publishFrom = new DateTime( 2010, 4, 19, 16, 30, 0, 0 );
DateTime publishTo = new DateTime( 2010, 4, 19, 16, 32, 0, 0 );
ContentEntity content = new ContentEntity();
ContentVersionEntity version = new ContentVersionEntity();
version.setKey( new ContentVersionKey( 101 ) );
version.setStatus( ContentStatus.APPROVED );
content.setDeleted( false );
content.setAvailableFrom( publishFrom.toDate() );
content.setAvailableTo( publishTo.toDate() );
content.setMainVersion( version );
version.setContent( content );
Date justAfterPublishTo = new DateTime( 2010, 4, 19, 16, 32, 1, 1 ).toDate();
assertFalse( content.isOnline( justAfterPublishTo ) );
assertTrue( content.getMainVersion().getState( justAfterPublishTo ) == ContentVersionEntity.STATE_PUBLISH_EXPIRED );
Date atPublishTo = new DateTime( 2010, 4, 19, 16, 32, 0, 0 ).toDate();
assertFalse( content.isOnline( atPublishTo ) );
assertTrue( content.getMainVersion().getState( atPublishTo ) == ContentVersionEntity.STATE_PUBLISH_EXPIRED );
Date justBeforePublishTo = new DateTime( 2010, 4, 19, 16, 31, 59, 999 ).toDate();
assertTrue( content.isOnline( justBeforePublishTo ) );
assertTrue( content.getMainVersion().getState( justBeforePublishTo ) == ContentVersionEntity.STATE_PUBLISHED );
}
@Test
public void testPublishFrom()
{
DateTime publishFrom = new DateTime( 2010, 4, 19, 16, 30, 0, 0 );
DateTime publishTo = new DateTime( 2010, 4, 19, 16, 32, 0, 0 );
ContentEntity content = new ContentEntity();
ContentVersionEntity version = new ContentVersionEntity();
version.setKey( new ContentVersionKey( 101 ) );
version.setStatus( ContentStatus.APPROVED );
content.setDeleted( false );
content.setAvailableFrom( publishFrom.toDate() );
content.setAvailableTo( publishTo.toDate() );
content.setMainVersion( version );
version.setContent( content );
Date justAfterPublishFrom = new DateTime( 2010, 4, 19, 16, 30, 1, 1 ).toDate();
assertTrue( content.isOnline( justAfterPublishFrom ) );
assertTrue( content.getMainVersion().getState( justAfterPublishFrom ) == ContentVersionEntity.STATE_PUBLISHED );
Date atPublishFrom = new DateTime( 2010, 4, 19, 16, 30, 0, 0 ).toDate();
assertTrue( content.isOnline( atPublishFrom ) );
assertTrue( content.getMainVersion().getState( atPublishFrom ) == ContentVersionEntity.STATE_PUBLISHED );
Date justBeforePublishFrom = new DateTime( 2010, 4, 19, 16, 29, 59, 999 ).toDate();
assertFalse( content.isOnline( justBeforePublishFrom ) );
assertTrue( content.getMainVersion().getState( justBeforePublishFrom ) == ContentVersionEntity.STATE_PUBLISH_WAITING );
}
@Test
public void testSetAvailableFrom()
{
ContentEntity content = new ContentEntity();
boolean modified = content.setAvailableFrom( null );
assertFalse( modified );
modified = content.setAvailableFrom( new DateTime( 2008, 1, 1, 1, 1, 1, 1 ).toDate() );
assertTrue( modified );
modified = content.setAvailableFrom( new DateTime( 2008, 1, 1, 1, 1, 1, 1 ).toDate() );
assertFalse( modified );
modified = content.setAvailableFrom( new DateTime( 2005, 1, 1, 1, 1, 1, 1 ).toDate() );
assertTrue( modified );
modified = content.setAvailableFrom( null );
assertTrue( modified );
}
@Test
public void testSetAvailableTo()
{
ContentEntity content = new ContentEntity();
boolean modified = content.setAvailableTo( null );
assertFalse( modified );
modified = content.setAvailableTo( new DateTime( 2008, 1, 1, 1, 1, 1, 1 ).toDate() );
assertTrue( modified );
modified = content.setAvailableTo( new DateTime( 2008, 1, 1, 1, 1, 1, 1 ).toDate() );
assertFalse( modified );
modified = content.setAvailableTo( new DateTime( 2005, 1, 1, 1, 1, 1, 1 ).toDate() );
assertTrue( modified );
modified = content.setAvailableTo( null );
assertTrue( modified );
}
}