diff options
Diffstat (limited to 'src/test/java/at/ac')
| -rw-r--r-- | src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehiclePersistenceTest.java | 122 | 
1 files changed, 122 insertions, 0 deletions
diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehiclePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehiclePersistenceTest.java new file mode 100644 index 0000000..e37259b --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/vehicle/VehiclePersistenceTest.java @@ -0,0 +1,122 @@ +package at.ac.tuwien.sepm.assignment.groupphase.vehicle; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.VehicleDatabaseDao; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Status; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; +import java.io.InputStream; +import java.sql.Types; +import java.util.List; +import org.dbunit.DBTestCase; +import org.dbunit.PropertiesBasedJdbcDatabaseTester; +import org.dbunit.database.DatabaseConfig; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.datatype.DataType; +import org.dbunit.dataset.datatype.DataTypeException; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory; +import org.junit.Assert; + +public class VehiclePersistenceTest extends DBTestCase { + +    private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); +    private static final String JDBC_URL = +            "jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'"; + +    private VehicleDAO vehicleDAO; + +    public VehiclePersistenceTest() throws PersistenceException { +        vehicleDAO = new VehicleDatabaseDao(new JDBCConnectionManager(JDBC_URL)); + +        System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); +        System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); +    } + +    @Override +    protected IDataSet getDataSet() throws Exception { +        InputStream res = getClass().getClassLoader().getResourceAsStream("vehicleTestData.xml"); +        return new FlatXmlDataSetBuilder().build(res); +    } + +    @Override +    protected void setUpDatabaseConfig(DatabaseConfig config) { +        PostgresqlDataTypeFactory factory = +                new PostgresqlDataTypeFactory() { +                    @Override +                    public boolean isEnumType(String sqlTypeName) { +                        if (sqlTypeName.equalsIgnoreCase("enum")) return true; + +                        return super.isEnumType(sqlTypeName); +                    } + +                    @Override +                    public DataType createDataType(int sqlType, String sqlTypeName) +                            throws DataTypeException { +                        if (isEnumType(sqlTypeName)) { +                            sqlType = Types.VARCHAR; +                        } + +                        return super.createDataType(sqlType, sqlTypeName); +                    } +                }; + +        config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory); +    } + +    public void testListVehicle() throws PersistenceException { +        List<Vehicle> vehicles = vehicleDAO.list(); + +        Vehicle v1 = +                Vehicle.builder() +                        .id(1) +                        .constructionType(ConstructionType.HOCHDACH) +                        .name("RTW-1") +                        .hasNef(true) +                        .status(Status.ABGEMELDET) +                        .type(VehicleType.RTW) +                        .build(); +        Vehicle v2 = +                Vehicle.builder() +                        .id(2) +                        .constructionType(ConstructionType.MITTELHOCHDACH) +                        .name("KTW-2") +                        .hasNef(false) +                        .status(Status.FREI_WACHE) +                        .type(VehicleType.KTW) +                        .build(); +        Vehicle v3 = +                Vehicle.builder() +                        .id(3) +                        .constructionType(ConstructionType.NORMAL) +                        .name("NEF-3") +                        .hasNef(false) +                        .status(Status.FREI_FUNK) +                        .type(VehicleType.NEF) +                        .build(); + +        Assert.assertTrue(vehicles.contains(v1)); +        Assert.assertTrue(vehicles.contains(v2)); +        Assert.assertTrue(vehicles.contains(v3)); +        Assert.assertEquals(3, vehicles.size()); +    } + +    public void testVehicleListNoElement() throws PersistenceException { +        List<Vehicle> vehicles = vehicleDAO.list(); + +        Vehicle v1 = +                Vehicle.builder() +                        .id(30) +                        .constructionType(ConstructionType.NORMAL) +                        .name("NEF-3") +                        .hasNef(false) +                        .status(Status.FREI_FUNK) +                        .type(VehicleType.NEF) +                        .build(); + +        Assert.assertFalse(vehicles.contains(v1)); +    } +}  | 
