package marubinotto.piggydb.impl; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import static marubinotto.util.time.DateTime.date; import marubinotto.piggydb.fixture.table.AllTables; import marubinotto.piggydb.model.Fragment; import marubinotto.piggydb.model.auth.OwnerAuth; import marubinotto.piggydb.model.query.FragmentsByUser; import marubinotto.util.paging.Page; import org.junit.Before; import org.junit.Test; public class H2WhiteBoxTest { private InMemoryDatabase database; private AllTables tables; private H2FragmentRepository fragmentRepository; @Before public void given() throws Exception { this.database = new InMemoryDatabase(); this.tables = new AllTables(this.database.getDataSource()); this.fragmentRepository = this.database.getFragmentRepository(); } private Page<Fragment> findByOwner() throws Exception { FragmentsByUser query = (FragmentsByUser) this.fragmentRepository.getQuery(FragmentsByUser.class); query.setUserName(OwnerAuth.USER_NAME_OWNER); return query.getPage(5, 0); } @Test public void nullCreatorShouldBeRegardedAsOwner() throws Exception { this.tables.fragment.cleanInsert(new Object[][]{ {"fragment_id", "creation_datetime", "creator", "update_datetime", "updater"}, {"1", date(2009, 1, 1), null, date(2009, 1, 1), null}}); Page<Fragment> results = findByOwner(); assertEquals(1, results.size()); assertEquals(1, results.get(0).getId().intValue()); assertEquals(OwnerAuth.USER_NAME_OWNER, results.get(0).getCreator()); } @Test public void nullUpdaterShouldBeRegardedAsOwnerWhenUpdated() throws Exception { this.tables.fragment.cleanInsert(new Object[][]{ {"fragment_id", "creation_datetime", "creator", "update_datetime", "updater"}, {"1", date(2009, 1, 1), "someone", date(2009, 1, 2), null}}); Page<Fragment> results = findByOwner(); assertEquals(1, results.size()); assertEquals(1, results.get(0).getId().intValue()); assertEquals(OwnerAuth.USER_NAME_OWNER, results.get(0).getUpdater()); } @Test public void nullUpdaterShouldNotBeRegardedAsOwnerWhenNotUpdated() throws Exception { this.tables.fragment.cleanInsert(new Object[][]{ {"fragment_id", "creation_datetime", "creator", "update_datetime", "updater"}, {"1", date(2009, 1, 1), "someone", date(2009, 1, 1), null}}); Page<Fragment> results = findByOwner(); assertTrue(results.isEmpty()); } }