// ========================================================================
// Copyright (C) zeroth Project Team. All rights reserved.
// GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
// http://www.gnu.org/licenses/agpl-3.0.txt
// ========================================================================
package zeroth.framework.enterprise.domain;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.math.BigDecimal;
import java.util.Date;
import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.transaction.api.annotation.Transactional;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* {@link AbstractAuditable} のユニットテスト
* @author nilcy
*/
@RunWith(Arquillian.class)
@Transactional
@SuppressWarnings("all")
public final class AbstractAuditableTest {
private TestAuditable testee;
@Produces
@PersistenceContext(unitName = "primary")
private EntityManager manager;
private static final Date TODAY = new Date();
@Deployment
public static JavaArchive deployment() {
return ArquillianDeployment.defaultDeployment();
}
@Before
public void before() {
testee = new TestAuditable();
}
@Test
public void testAbstractRevisedObject() {
assertThat(new AbstractAuditable() {
}, is(not(nullValue())));
}
@Test
public void testGetSetCreatedBy() {
assertThat(testee.getCreatedBy(), is(nullValue()));
testee.setCreatedBy(1L);
assertThat(testee.getCreatedBy(), is(1L));
}
@Test
public void testGetSetCreatedDate() {
assertThat(testee.getCreatedDate(), is(nullValue()));
testee.setCreatedDate(TODAY);
assertThat(testee.getCreatedDate(), is(TODAY));
}
@Test
public void testGetSetLastModifiedBy() {
assertThat(testee.getLastModifiedBy(), is(nullValue()));
testee.setLastModifiedBy(1L);
assertThat(testee.getLastModifiedBy(), is(1L));
}
@Test
public void testGetSetUpdated() {
assertThat(testee.getLastModifiedDate(), is(nullValue()));
testee.setLastModifiedDate(TODAY);
assertThat(testee.getLastModifiedDate(), is(TODAY));
}
@Test
public void testSameIdentityAs() {
assertThat(testee.sameIdentityAs(null), is(false));
final TestAuditable other = new TestAuditable();
assertThat(testee.sameIdentityAs(other), is(true));
testee.setId(BigDecimal.valueOf(0L));
other.setId(BigDecimal.valueOf(0L));
assertThat(testee.sameIdentityAs(other), is(true));
testee.setId(BigDecimal.valueOf(0L));
other.setId(BigDecimal.valueOf(1L));
assertThat(testee.sameIdentityAs(other), is(false));
}
@Test
public void testCallback() {
assertThat(testee.getCreatedDate(), is(nullValue()));
assertThat(testee.getLastModifiedDate(), is(nullValue()));
manager.persist(testee);
manager.flush();
assertThat(testee.getCreatedDate(), is(not(nullValue())));
assertThat(testee.getLastModifiedDate(), is(not(nullValue())));
assertThat(testee.getCreatedDate(), is(testee.getLastModifiedDate()));
for (final TestAuditable o : manager.createQuery("select e from TestAuditable e",
TestAuditable.class).getResultList()) {
o.setLastModifiedBy(0L);
manager.merge(o);
manager.flush();
assertThat(o.getCreatedDate(), is(not(o.getLastModifiedDate())));
}
}
}