/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.dataprocess.server.dao;
import net.codjo.database.common.api.JdbcFixture;
import net.codjo.database.common.api.structure.SqlTable;
import net.codjo.datagen.DatagenFixture;
import net.codjo.dataprocess.common.exception.UserManagerException;
import net.codjo.dataprocess.server.util.TestUtils;
import net.codjo.test.common.fixture.CompositeFixture;
import net.codjo.tokio.TokioFixture;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static net.codjo.test.common.matcher.JUnitMatchers.*;
/**
*
*/
public class UserManagerDaoTest {
private static final TokioFixture TOKIO = new TokioFixture(UserManagerDaoTest.class);
private static final DatagenFixture DATAGEN = new DatagenFixture(UserManagerDaoTest.class);
private static final CompositeFixture COMPOSITE_FIXTURE = new CompositeFixture(TOKIO, DATAGEN);
@BeforeClass
public static void beforeClass() throws Exception {
COMPOSITE_FIXTURE.doSetUp();
try {
JdbcFixture jdbcFixture = TOKIO.getJdbcFixture();
jdbcFixture.advanced().dropAllObjects();
DATAGEN.generate();
TestUtils.initScript(jdbcFixture, DATAGEN, "PM_DP_USER.tab");
}
catch (Exception e) {
COMPOSITE_FIXTURE.doTearDown();
fail(e.getLocalizedMessage());
}
}
@AfterClass
public static void afterClass() throws Exception {
COMPOSITE_FIXTURE.doTearDown();
}
@Test
public void createUser() throws Exception {
TOKIO.insertInputInDb("CREATE");
new UserManagerDao(TOKIO.getConnection()).createUser("michel", "michel param");
TOKIO.assertAllOutputs("CREATE");
}
@Test
public void isExist() throws Exception {
TOKIO.insertInputInDb("LOAD");
assertThat(new UserManagerDao(TOKIO.getConnection()).isExist("michel"), equalTo(true));
assertThat(new UserManagerDao(TOKIO.getConnection()).isExist("michel2"), equalTo(false));
}
@Test
public void loadUser() throws Exception {
TOKIO.insertInputInDb("LOAD");
String result = new UserManagerDao(TOKIO.getConnection()).loadUser("michel");
assertThat(result, equalTo("michel param"));
}
@Test
public void updateUser() throws Exception {
TOKIO.insertInputInDb("MODIF");
new UserManagerDao(TOKIO.getConnection()).updateUser("michel", "michel param modif");
TOKIO.assertAllOutputs("MODIF");
}
@Test
public void manageUser() throws Exception {
TOKIO.getJdbcFixture().delete(SqlTable.table("PM_DP_USER"));
UserManagerDao userManager = new UserManagerDao(TOKIO.getConnection());
userManager.createUser("michel", "michel param");
assertThat(userManager.isExist("michel"), equalTo(true));
assertThat(userManager.loadUser("michel"), equalTo("michel param"));
userManager.updateUser("michel", "michel param modif");
assertThat(userManager.loadUser("michel"), equalTo("michel param modif"));
try {
userManager.updateUser("michel2", "michou2 param modif");
fail("Ce test aurait d� �chouer !");
}
catch (UserManagerException ex) {
assertThat(ex.getLocalizedMessage(),
equalTo("L'utilisateur 'michel2' est introuvable dans PM_DP_USER."));
}
}
}