package net.codjo.dataprocess.server.dao; import net.codjo.database.common.api.JdbcFixture; import net.codjo.datagen.DatagenFixture; import net.codjo.dataprocess.common.DataProcessConstants; import net.codjo.dataprocess.server.util.TestUtils; import net.codjo.test.common.fixture.CompositeFixture; import net.codjo.tokio.TokioFixture; import java.sql.Connection; import java.util.Map; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import static net.codjo.test.common.matcher.JUnitMatchers.*; /** * */ public class FamilyDaoTest { private static final TokioFixture TOKIO = new TokioFixture(FamilyDaoTest.class); private static final DatagenFixture DATAGEN = new DatagenFixture(FamilyDaoTest.class); private static final CompositeFixture COMPOSITE_FIXTURE = new CompositeFixture(TOKIO, DATAGEN); @BeforeClass public static void beforeClass() throws Exception { COMPOSITE_FIXTURE.doSetUp(); JdbcFixture jdbcFixture = TOKIO.getJdbcFixture(); jdbcFixture.advanced().dropAllObjects(); try { DATAGEN.generate(); TestUtils.initScript(jdbcFixture, DATAGEN, "PM_FAMILY.tab"); TestUtils.initScript(jdbcFixture, DATAGEN, "PM_REPOSITORY.tab"); } catch (Exception e) { COMPOSITE_FIXTURE.doTearDown(); fail(e.getLocalizedMessage()); } } @AfterClass public static void afterClass() throws Exception { COMPOSITE_FIXTURE.doTearDown(); } @Test public void newFamily() throws Exception { TOKIO.insertInputInDb("FAMILY_NEW"); Connection con = TOKIO.getConnection(); FamilyDao familyDao = new FamilyDao(); familyDao.newFamily(con, 1, "FAM2"); familyDao.newFamily(con, 1, "FAM3"); familyDao.newFamily(con, 2, "FAM3"); TOKIO.assertAllOutputs("FAMILY_NEW"); if (!DataProcessConstants.FAMILY_ALREADY_EXISTS.equals( familyDao.newFamily(con, 1, "FAM2"))) { fail("La famille doit d�j� exister!"); } if (!DataProcessConstants.FAMILY_ALREADY_EXISTS.equals( familyDao.newFamily(con, 2, "FAM3"))) { fail("La famille doit d�j� exister!"); } } @Test public void getFamilyIdFromName() throws Exception { TOKIO.insertInputInDb("FAMILY_NEW"); Connection con = TOKIO.getConnection(); FamilyDao familyDao = new FamilyDao(); int familyId = familyDao.getFamilyIdFromName(con, 1, "FAM1"); assertThat(familyId, equalTo(2)); try { familyDao.getFamilyIdFromName(con, 1, "FAM2"); fail("Le test devrait �chouer : La famille 'XXX' est inexistante dans le repository id = Y"); } catch (Exception ex) { assertThat(ex.getLocalizedMessage(), equalTo("La famille 'FAM2' est inexistante dans le repository id = 1")); } } @Test public void getFamilyMap() throws Exception { TOKIO.insertInputInDb("FAMILY_GET"); Connection con = TOKIO.getConnection(); FamilyDao familyDao = new FamilyDao(); Map<String, String> familyMap = familyDao.getFamilyMap(con, "REPO1"); assertThat(familyMap.size(), equalTo(2)); assertThat(familyMap.get("1"), equalTo("FAM1")); familyMap = familyDao.getFamilyMap(con, "REPO2"); assertThat(familyMap.size(), equalTo(1)); assertThat(familyMap.get("3"), equalTo("FAM3")); familyMap = familyDao.getFamilyMap(con, "REPO3"); assertThat(familyMap.size(), equalTo(0)); } }