/* * Copyright (C) 2014 Jan Pokorsky * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package cz.cas.lib.proarc.common.dao.empiredb; import cz.cas.lib.proarc.common.dao.GroupDao; import cz.cas.lib.proarc.common.user.Group; import java.sql.Timestamp; import java.util.List; import org.dbunit.dataset.CompositeDataSet; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ReplacementDataSet; import org.junit.After; import org.junit.AfterClass; import static org.junit.Assert.*; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; /** * * @author Jan Pokorsky */ public class EmpireGroupDaoTest { private DbUnitSupport support; private ProarcDatabase schema; private EmpireDaoFactory daos; private SqlTransaction tx; private GroupDao dao; private Timestamp dbTimestamp; public EmpireGroupDaoTest() { } @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { support = new DbUnitSupport(); schema = support.getEmireCfg().getSchema(); daos = new EmpireDaoFactory(support.getEmireCfg()); daos.init(); tx = daos.createTransaction(); dao = daos.createUserGroup(); dao.setTransaction(tx); } @After public void tearDown() { if (tx != null) { tx.close(); } } private IDataSet database(IDataSet... ds) throws Exception { ReplacementDataSet rds = new ReplacementDataSet(new CompositeDataSet(ds)); // rds.addReplacementObject("{$user.home}", "relative/path/"); dbTimestamp = new Timestamp(System.currentTimeMillis()); rds.addReplacementObject("{$now}", dbTimestamp); return rds; } @Test public void testFind() throws Exception { IDataSet db = database( support.loadFlatXmlDataStream(getClass(), "group.xml") ); support.cleanInsert(support.getConnection(tx), db); tx.commit(); Integer id = 1; Group result = dao.find(id); assertNotNull(result); assertEquals(Timestamp.valueOf("2013-01-12 00:00:00"), result.getCreated()); assertEquals(id, result.getId()); assertEquals("group:testgrp", result.getName()); assertEquals("GroupTitle", result.getTitle()); assertEquals(dbTimestamp, result.getTimestamp()); } @Test public void testFindName() throws Exception { IDataSet db = database( support.loadFlatXmlDataStream(getClass(), "group.xml") ); support.cleanInsert(support.getConnection(tx), db); tx.commit(); List<Group> find = dao.find(null, "group:testgrp", null, null); assertNotNull(find); assertEquals(1, find.size()); Group result = find.get(0); assertNotNull(result); assertEquals(Timestamp.valueOf("2013-01-12 00:00:00"), result.getCreated()); assertEquals(Integer.valueOf(1), result.getId()); assertEquals("group:testgrp", result.getName()); assertEquals("GroupTitle", result.getTitle()); assertEquals(dbTimestamp, result.getTimestamp()); // find remote find = dao.find(null, null, "DESA_GROUP", "DESA"); assertNotNull(find); assertEquals(1, find.size()); } @Test public void testCreate() throws Exception { IDataSet db = database( support.loadFlatXmlDataStream(getClass(), "group.xml") ); support.cleanInsert(support.getConnection(tx), db); final Integer id = 10; support.initSequences(tx, id, schema.tableUserGroup.id.getSequenceName()); tx.commit(); Group group = Group.create("createName", "createTitle"); group.setCreated(new Timestamp(System.currentTimeMillis())); dao.update(group); assertEquals(id, group.getId()); Group result = dao.find(group.getId()); assertEquals(group.getId(), result.getId()); assertEquals(group.getCreated(), result.getCreated()); assertEquals(group.getName(), result.getName()); assertEquals(group.getRemoteName(), result.getRemoteName()); assertEquals(group.getTimestamp(), result.getTimestamp()); assertEquals(group.getTitle(), result.getTitle()); } @Test public void testUpdate() throws Exception { IDataSet db = database( support.loadFlatXmlDataStream(getClass(), "group.xml") ); support.cleanInsert(support.getConnection(tx), db); tx.commit(); Group group = dao.find(1); group.setRemoteName("updateRemoteName"); group.setRemoteType("updateRemoteType"); group.setTitle("updateTitle"); dao.update(group); List<Group> find = dao.find(null, null, "updateRemoteName", "updateRemoteType"); assertNotNull(find); assertEquals(1, find.size()); Group result = find.get(0); assertEquals(group.getId(), result.getId()); assertEquals(group.getCreated(), result.getCreated()); assertEquals(group.getName(), result.getName()); assertEquals(group.getRemoteName(), result.getRemoteName()); assertEquals(group.getRemoteType(), result.getRemoteType()); assertEquals(group.getTimestamp(), result.getTimestamp()); assertEquals(group.getTitle(), result.getTitle()); } }