cz.muni.fi.airport.tests.FlightDaoTest.java Source code

Java tutorial

Introduction

Here is the source code for cz.muni.fi.airport.tests.FlightDaoTest.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.airport.tests;

import cz.muni.fi.airport.JpaTestContext;
import cz.muni.fi.airport.dao.*;
import cz.muni.fi.airport.entity.*;
import cz.muni.fi.airport.enums.Gender;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.validation.ConstraintViolationException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.springframework.test.context.transaction.TransactionalTestExecutionListener;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

/**
 *
 * @author Sebastian Kupka
 */
@ContextConfiguration(classes = { JpaTestContext.class })
@TestExecutionListeners(TransactionalTestExecutionListener.class)
@Transactional
public class FlightDaoTest extends AbstractTestNGSpringContextTests {

    @Autowired
    public FlightDao flightDao;

    @Autowired
    public StewardDao stewardDao;

    @Autowired
    public DestinationDao destinationDao;

    @Autowired
    public AirplaneDao airplaneDao;

    private Steward s1;
    private Steward s2;
    private Steward s3;
    private Destination d1;
    private Destination d2;
    private Airplane a1;
    private Airplane a2;
    private Flight f1;

    private Date date1;
    private Date date2;
    private Date date3;

    @BeforeMethod
    public void before() throws ParseException {

        Calendar cal = Calendar.getInstance();
        cal.set(2015, 1, 1, 2, 0);
        date1 = cal.getTime();
        cal.set(2015, 1, 1, 12, 30);
        date2 = cal.getTime();
        cal.set(2015, 1, 2, 0, 0);
        date3 = cal.getTime();

        a1 = new Airplane();
        a1.setCapacity(1);
        a1.setName("airA");
        a1.setType("typeA");

        a2 = new Airplane();
        a2.setCapacity(2);
        a2.setName("airB");
        a2.setType("typeB");

        airplaneDao.create(a1);
        airplaneDao.create(a2);

        d1 = new Destination();
        d1.setLocation("Brno");

        d2 = new Destination();
        d2.setLocation("Praha");

        destinationDao.create(d1);
        destinationDao.create(d2);

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");

        s1 = new Steward();
        s1.setFirstname("fn1");
        s1.setSurname("sn1");
        s1.setPersonalIdentificator("111-11111");
        s1.setDateOfBirth(formatter.parse("1988/02/02"));
        s1.setEmploymentDate(formatter.parse("2014/03/01"));
        s1.setUsername("bbb");
        s1.setGender(Gender.MALE);

        s2 = new Steward();
        s2.setFirstname("fn2");
        s2.setSurname("sn1");
        s2.setPersonalIdentificator("111-11112");
        s2.setDateOfBirth(formatter.parse("1988/02/02"));
        s2.setEmploymentDate(formatter.parse("2014/03/01"));
        s2.setUsername("ccc");
        s2.setGender(Gender.MALE);

        s3 = new Steward();
        s3.setFirstname("fn2");
        s3.setSurname("sn3");
        s3.setPersonalIdentificator("111-11113");
        s3.setDateOfBirth(formatter.parse("1988/02/02"));
        s3.setEmploymentDate(formatter.parse("2014/03/01"));
        s3.setUsername("ddd");
        s3.setGender(Gender.FEMALE);

        stewardDao.create(s1);
        stewardDao.create(s2);
        stewardDao.create(s3);

        f1 = new Flight();
        f1.setAirplane(a1);
        f1.setArrival(date2);
        f1.setDeparture(date1);
        f1.setOrigin(d1);
        f1.setDestination(d2);
        f1.addSteward(s1);
        f1.addSteward(s2);
    }

    @Test
    public void testCreate() {
        Assert.isNull(f1.getId());
        flightDao.create(f1);
        Assert.notNull(flightDao.findById(f1.getId()));
    }

    @Test
    public void testFind() {

        Flight f1 = new Flight();
        f1.setAirplane(a1);
        f1.setArrival(date2);
        f1.setDeparture(date1);
        f1.setOrigin(d1);
        f1.setDestination(d2);
        f1.addSteward(s1);
        f1.addSteward(s2);

        Assert.isNull(f1.getId());
        flightDao.create(f1);
        f1 = flightDao.findById(f1.getId());
        Assert.notNull(f1);
        assert f1.getAirplane().equals(a1);
        assert f1.getArrival().equals(date2);
        assert f1.getDeparture().equals(date1);
        assert f1.getOrigin().equals(d1);
        assert f1.getDestination().equals(d2);
        assert f1.getStewards().size() == 2;

    }

    @Test
    public void testUpdate() {
        flightDao.create(f1);
        Assert.notNull(flightDao.findById(f1.getId()));
        f1.setAirplane(a2);
        f1.setArrival(date3);
        f1.setDeparture(date2);
        f1.setOrigin(d2);
        f1.setDestination(d1);
        f1.addSteward(s3);
        flightDao.update(f1);

        f1 = flightDao.findById(f1.getId());

        assert flightDao.findById(f1.getId()).getAirplane().equals(airplaneDao.findById(a2.getId()));
        assert flightDao.findById(f1.getId()).getArrival().equals(date3);
        assert flightDao.findById(f1.getId()).getDeparture().equals(date2);
        assert flightDao.findById(f1.getId()).getOrigin().equals(destinationDao.findById(d2.getId()));
        assert flightDao.findById(f1.getId()).getDestination().equals(destinationDao.findById(d1.getId()));
        assert flightDao.findById(f1.getId()).getStewards().size() == 3;
    }

    @Test
    public void testRemove() {
        flightDao.create(f1);
        Assert.notNull(flightDao.findById(f1.getId()));
        flightDao.delete(f1);
        Assert.isNull(flightDao.findById(f1.getId()));
    }

    @Test(expectedExceptions = ConstraintViolationException.class)
    public void testNotFilledAirplane() {
        f1.setAirplane(null);
        flightDao.create(f1);
    }

    @Test(expectedExceptions = ConstraintViolationException.class)
    public void testNotFilledDestination() {
        f1.setDestination(null);
        flightDao.create(f1);
    }

    @Test(expectedExceptions = ConstraintViolationException.class)
    public void testNotFilledOrigin() {
        f1.setOrigin(null);
        flightDao.create(f1);
    }

    @Test(expectedExceptions = ConstraintViolationException.class)
    public void testNotFilledArrival() {
        f1.setArrival(null);
        flightDao.create(f1);
    }

    @Test(expectedExceptions = ConstraintViolationException.class)
    public void testNotFilledDeparture() {
        f1.setDeparture(null);
        flightDao.create(f1);
    }

    @Test
    public void testSorted() {
        Flight f3 = new Flight();
        f3.setAirplane(a1);
        f3.setArrival(date2);
        f3.setDeparture(date3);
        f3.setOrigin(d1);
        f3.setDestination(d2);
        f3.addSteward(s2);

        Flight f2 = new Flight();
        f2.setAirplane(a2);
        f2.setArrival(date3);
        f2.setDeparture(date2);
        f2.setOrigin(d2);
        f2.setDestination(d1);
        f2.addSteward(s1);

        Flight f1 = new Flight();
        f1.setAirplane(a2);
        f1.setArrival(date1);
        f1.setDeparture(date1);
        f1.setOrigin(d1);
        f1.setDestination(d2);
        f1.addSteward(s3);

        flightDao.create(f3);
        flightDao.create(f2);
        flightDao.create(f1);

        Assert.notNull(flightDao.findById(f1.getId()));
        Assert.notNull(flightDao.findById(f2.getId()));
        Assert.notNull(flightDao.findById(f3.getId()));

        List<Flight> flights = flightDao.listByDate(true);

        assert f1.equals(flights.get(0));
        assert f3.equals(flights.get(1));
        assert f2.equals(flights.get(2));

        flights = flightDao.listByDate(false);

        assert f1.equals(flights.get(0));
        assert f2.equals(flights.get(1));
        assert f3.equals(flights.get(2));
    }

    @Test
    public void testFindAll() {
        Flight f3 = new Flight();
        f3.setAirplane(a1);
        f3.setArrival(date2);
        f3.setDeparture(date1);
        f3.setOrigin(d1);
        f3.setDestination(d2);
        f3.addSteward(s2);

        Flight f2 = new Flight();
        f2.setAirplane(a1);
        f2.setArrival(date3);
        f2.setDeparture(date2);
        f2.setOrigin(d2);
        f2.setDestination(d1);
        f2.addSteward(s1);

        Flight f1 = new Flight();
        f1.setAirplane(a2);
        f1.setArrival(date3);
        f1.setDeparture(date1);
        f1.setOrigin(d1);
        f1.setDestination(d2);
        f1.addSteward(s3);

        flightDao.create(f1);
        flightDao.create(f2);
        flightDao.create(f3);

        List<Flight> flights = new ArrayList<>();
        flights.add(f1);
        flights.add(f2);
        flights.add(f3);

        for (Flight f : flightDao.findAll()) {
            assert testFlightPresent(f, flights);
        }
    }

    private boolean testFlightPresent(Flight flight, List<Flight> flights) {
        boolean match = false;
        for (Flight f : flights) {
            if (f.equals(flight)) {
                match = true;
                break;
            }
        }
        return match;
    }
}