diff options
Diffstat (limited to 'src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee')
| -rw-r--r-- | src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java | 155 | 
1 files changed, 155 insertions, 0 deletions
diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java new file mode 100644 index 0000000..f8fe0f3 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/EmployeePersistenceTest.java @@ -0,0 +1,155 @@ +package at.ac.tuwien.sepm.assignment.groupphase.employee; + +import static junit.framework.TestCase.fail; + +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDAO; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDatabaseDao; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; +import java.nio.charset.Charset; +import java.sql.SQLException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; +import org.dbunit.IDatabaseTester; +import org.dbunit.JdbcDatabaseTester; +import org.dbunit.dataset.DataSetException; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.dbunit.operation.DatabaseOperation; +import org.h2.tools.RunScript; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class EmployeePersistenceTest { + +    private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); +    private static final String JDBC_URL = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"; +    private static final String USER = ""; +    private static final String PASSWORD = ""; + +    private EmployeeDAO employeePersistence; + +    public EmployeePersistenceTest() throws PersistenceException { +        employeePersistence = new EmployeeDatabaseDao(new JDBCConnectionManager(JDBC_URL)); +    } + +    @BeforeClass +    public static void createSchema() throws SQLException { +        RunScript.execute( +                JDBC_URL, +                USER, +                PASSWORD, +                "classpath:sql/database.sql", +                Charset.forName("UTF8"), +                false); +    } + +    @Before +    public void importDataSet() throws Exception { +        IDataSet dataSet = readDataSet(); +        cleanlyInsert(dataSet); +    } + +    private IDataSet readDataSet() throws DataSetException { +        return new FlatXmlDataSetBuilder() +                .build( +                        getClass() +                                .getClassLoader() +                                .getResourceAsStream("employeeServiceTestData.xml")); +    } + +    private void cleanlyInsert(IDataSet dataSet) throws Exception { +        IDatabaseTester databaseTester = +                new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); + +        databaseTester.setSetUpOperation(DatabaseOperation.CLEAN_INSERT); +        databaseTester.setDataSet(dataSet); +        databaseTester.onSetup(); +    } + +    @Test +    public void testListEmployees() { + +        try { +            List<Employee> employees = employeePersistence.list(); + +            Employee empOne = +                    Employee.builder() +                            .id(1) +                            .name("Adam") +                            .birthday( +                                    LocalDate.parse( +                                            "10.10.2010", +                                            DateTimeFormatter.ofPattern("dd.MM.yyyy"))) +                            .educationLevel(EducationLevel.RS) +                            .isDriver(true) +                            .isPilot(false) +                            .build(); + +            Employee empTwo = +                    Employee.builder() +                            .id(2) +                            .name("Max") +                            .birthday( +                                    LocalDate.parse( +                                            "11.11.1990", +                                            DateTimeFormatter.ofPattern("dd.MM.yyyy"))) +                            .educationLevel(EducationLevel.NFS) +                            .isDriver(false) +                            .isPilot(false) +                            .build(); + +            Employee empThree = +                    Employee.builder() +                            .id(3) +                            .name("Lisa") +                            .birthday( +                                    LocalDate.parse( +                                            "16.10.1999", +                                            DateTimeFormatter.ofPattern("dd.MM.yyyy"))) +                            .educationLevel(EducationLevel.NKI) +                            .isDriver(true) +                            .isPilot(false) +                            .build(); + +            Assert.assertTrue(employees.contains(empOne)); +            Assert.assertTrue(employees.contains(empTwo)); +            Assert.assertTrue(employees.contains(empThree)); +            Assert.assertEquals(3, employees.size()); + +        } catch (PersistenceException e) { +            fail(); +        } +    } + +    @Test +    public void testEmployeeListNoElement() { + +        try { +            List<Employee> employees = employeePersistence.list(); + +            Employee empOne = +                    Employee.builder() +                            .id(10) +                            .name("Adam") +                            .birthday( +                                    LocalDate.parse( +                                            "10.10.2010", +                                            DateTimeFormatter.ofPattern("dd.MM.yyyy"))) +                            .educationLevel(EducationLevel.RS) +                            .isDriver(true) +                            .isPilot(false) +                            .build(); + +            Assert.assertFalse(employees.contains(empOne)); + +        } catch (PersistenceException e) { +            fail(); +        } +    } +}  | 
