package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao; import static org.junit.Assert.*; import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Employee; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Employee.EducationLevel; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Registration; import at.ac.tuwien.sepm.assignment.groupphase.util.JdbcTestCase; import java.time.Instant; import java.time.LocalDate; import java.util.HashSet; import java.util.Set; import org.dbunit.dataset.IDataSet; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; public class RegistrationDAOTest extends JdbcTestCase { private RegistrationDAO registrationDAO; public RegistrationDAOTest() throws PersistenceException { this.registrationDAO = new RegistrationDatabaseDAO( getJdbcConnectionManager(), new EmployeeDatabaseDAO(getJdbcConnectionManager())); } @Override protected IDataSet getDataSet() throws Exception { return getDataSet("registrationTestBaseData.xml"); } @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void addRegistrationsShouldSucceed() throws PersistenceException { Set registrations = new HashSet<>(); Employee employee1 = Employee.builder() .id(1) .name("John Doe") .birthday(LocalDate.now()) // incorrect, but should be irrelevant .educationLevel(EducationLevel.RS) .isDriver(true) .isPilot(true) .build(); Employee employee2 = Employee.builder() .id(2) .name("Nick \"Kage\" Verily") .birthday(LocalDate.now()) // incorrect, but should be irrelevant .educationLevel(EducationLevel.NKV) .isDriver(true) .isPilot(false) .build(); Employee employee3 = Employee.builder() .id(3) .name("Nicht Arzt") .birthday(LocalDate.now()) // incorrect, but should be irrelevant .educationLevel(EducationLevel.NA) .isDriver(false) .isPilot(false) .build(); Registration registration1 = Registration.builder() .start(Instant.now()) // incorrect, but should be irrelevant to outcome .end(Instant.now()) // same .employee(employee1) .build(); Registration registration2 = Registration.builder() .start(Instant.now()) // incorrect, but should be irrelevant to outcome .end(Instant.now()) // same .employee(employee2) .build(); Registration registration3 = Registration.builder() .start(Instant.now()) // incorrect, but should be irrelevant to outcome .end(Instant.now()) // same .employee(employee3) .build(); registrations.add(registration1); registrations.add(registration2); registrations.add(registration3); Set returnvalues = registrationDAO.add(1, registrations); assertFalse(returnvalues.isEmpty()); // can be improved... } @Test public void addRegistrationToInexistentVehicleShouldFail() throws PersistenceException { thrown.expect(PersistenceException.class); Set registrations = new HashSet<>(); Employee employee = Employee.builder() .id(1) .name("John Doe") .birthday(LocalDate.now()) // incorrect, but should be irrelevant .educationLevel(EducationLevel.RS) .isDriver(true) .isPilot(true) .build(); Registration registration = Registration.builder() .start(Instant.now()) .end(Instant.now()) .employee(employee) .build(); registrations.add(registration); registrationDAO.add(200, registrations); } }