Package cz.muni.fi.pa165

Source Code of cz.muni.fi.pa165.ReaderDAOImplTest

package cz.muni.fi.pa165;

import cz.muni.fi.pa165.library.backend.ReaderDAOImpl;
import cz.muni.fi.pa165.library.backend.Reader;
import java.sql.DriverManager;
import java.sql.SQLNonTransientConnectionException;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import junit.framework.TestCase;

/**
*
* @author Zuzana Foltýnová
*/
public class ReaderDAOImplTest extends TestCase {
    private EntityManagerFactory emf;
    private ReaderDAOImpl readerDAO;
    private EntityManager em;
  
    public ReaderDAOImplTest(String testName){
        super(testName);

    }
           
    @Override
    protected void setUp() throws Exception {
        super.setUp();
        try {
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
            DriverManager.getConnection("jdbc:derby:memory:testDB;create=true").close();
        } catch (Exception ex) {
            ex.printStackTrace();
            fail("Exception during database startup.");
        }
        try {
            emf = Persistence.createEntityManagerFactory("testPU");
            readerDAO = new ReaderDAOImpl();
            em = emf.createEntityManager();
            readerDAO.setEntityManager(em);
        } catch (Exception ex) {
            ex.printStackTrace();
            fail("Exception during JPA EntityManager instanciation.");
        }
    }
   
    @Override
    protected void tearDown() throws Exception {
        super.tearDown();
        emf.close();

        try {
            DriverManager.getConnection("jdbc:derby:memory:testDB;drop=true").close();
        } catch (SQLNonTransientConnectionException ex) {
            if (ex.getErrorCode() != 45000) {
                throw ex;
            }
        } 
    }
   
    private Reader addReader(){
        Reader reader = new Reader();
        reader.setFirstName("Karel");
        reader.setSurname("Novak");
        reader.setAddress("Nove Hrady, Praha");
        reader.setBirthNumber("12.3.2012");
        reader.setTelephoneNumber("+420756362776");
        reader.setEmail("mail@seznam.cz");
        return reader;          
    }
   
    private void createTestData(){
      
        for (int i=0; i<10;i++){
            Reader readers = new Reader();
            readers.setFirstName("Karel"+i);
            readers.setSurname("Novak"+i);
            readers.setBirthNumber(i+i+".3.2012");
            readers.setAddress("Nove Hrady "+i+", Praha");
            readers.setTelephoneNumber("+4207563627"+i+i);      
            readers.setEmail("mail"+i+"@seznam.cz");
            EntityManager em = emf.createEntityManager();
            em.getTransaction().begin();
            em.persist(readers);
            em.getTransaction().commit();
            if (em != null) {
                em.close();
            }
        }
       
    }
   
    private void persist(Reader reader) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        em.persist(reader);
        em.getTransaction().commit();
        if (em != null) {
            em.close();
        }
    }

   
    public void testCreateReaderWithWrongArguments() {
        try {
            readerDAO.createReader(null);
            fail("NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        Reader reader = addReader();
        reader.setId(1l);
        try {
            readerDAO.createReader(reader);
            fail("Wrong id, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setId(new Long(-1));
        try {
            readerDAO.createReader(reader);
            fail("Wrong id, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setFirstName(null);
        try {
            readerDAO.createReader(reader);
            fail("FirstName is null, NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setFirstName("");
        try {
            readerDAO.createReader(reader);
            fail("FirstName is empty, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setSurname(null);
        try {
            readerDAO.createReader(reader);
            fail("Surname is null, NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setSurname("");
        try {
            readerDAO.createReader(reader);
            fail("Surname is empty, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setBirthNumber(null);
        try {
            readerDAO.createReader(reader);
            fail("Birth number is null, NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setBirthNumber("");
        try {
            readerDAO.createReader(reader);
            fail("Birth number is empty, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setAddress(null);
        try {
            readerDAO.createReader(reader);
            fail("Address is null, NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setAddress("");
        try {
            readerDAO.createReader(reader);
            fail("Address is empty, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setEmail(null);
        try {
            readerDAO.createReader(reader);
            fail("Email is null, NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setEmail("");
        try {
            readerDAO.createReader(reader);
            fail("Email is empty, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
    }



    public void testFindAllReaders() {
        assertEquals("There should be no readers",0, readerDAO.findAllReaders().size());
        createTestData();
        assertEquals("The number of readers in list is not correct",10, readerDAO.findAllReaders().size())
    }

    public void testFindReaderById() {
        try {
            assertNull(readerDAO.findReaderById(new Long(0)));
            fail("ID of reader should not be zero");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        try {
            assertNull(readerDAO.findReaderById(new Long(-1)));
            fail("ID of reader should not be negative");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        try {
            readerDAO.createReader(null);
            fail("ID is null, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        createTestData();
        Reader[] readers = readerDAO.findAllReaders().toArray(new Reader[]{});
        for(int i=0;i<readers.length;i++){
            Reader result = readerDAO.findReaderById(readers[i].getId());
            assertEquals("Readers are not equals", readers[i], result);
            assertEquals("Correct ID is not return", readers[i].getId(), result.getId());
            assertEquals("Correct first name is not return",readers[i].getFirstName(), result.getFirstName());
            assertEquals("Correct surname is not return", readers[i].getSurname(), result.getSurname());
            assertEquals("Correct birthNumber is not return", readers[i].getBirthNumber(), result.getBirthNumber());
            assertEquals("Correct address is not return", readers[i].getAddress(), result.getAddress());
            assertEquals("Correct email is not return", readers[i].getEmail(), result.getEmail());
            assertEquals("Correct telephoneNumber is not return", readers[i].getTelephoneNumber(), result.getTelephoneNumber());
        }
      }

    public void testFindReaderByName() {
        try {
            assertNull(readerDAO.findReaderByName("","Novák"));
            fail("Name of reader should not be empty");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        try {
            assertNull(readerDAO.findReaderByName("Jan",""));
            fail("Surname of reader should not be empty");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        try {
            assertNull(readerDAO.findReaderByName(null,"Novak"));
            fail("Name of reader should not be null");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        try {
            assertNull(readerDAO.findReaderByName("Jan",null));
            fail("Surname of reader should not be null");
        } catch (IllegalArgumentException ex) {
            //OK
        }

        Reader reader = addReader();
        persist(reader);
        assertEquals("Reader was not find by name", 1, readerDAO.findReaderByName("Karel", "Novak").size());
        Reader[] readers = readerDAO.findReaderByName(reader.getFirstName(), reader.getSurname()).toArray(new Reader[]{});;
        assertEquals("Readers are not equals", readers[0], reader);
        assertEquals("Correct ID is not return", readers[0].getId(), reader.getId());
        assertEquals("Correct first name is not return",readers[0].getFirstName(), reader.getFirstName());
        assertEquals("Correct surname is not return", readers[0].getSurname(), reader.getSurname());
        assertEquals("Correct birthNumber is not return", readers[0].getBirthNumber(), reader.getBirthNumber());
        assertEquals("Correct address is not return", readers[0].getAddress(), reader.getAddress());
        assertEquals("Correct email is not return", readers[0].getEmail(), reader.getEmail());
        assertEquals("Correct telephoneNumber is not return", readers[0].getTelephoneNumber(), reader.getTelephoneNumber());
    }

    public void testFindReaderByBirthNumber() {
        try {
            assertNull(readerDAO.findReaderByBirthNumber(""));
            fail("Birth number of reader should not be empty");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        try {
            assertNull(readerDAO.findReaderByBirthNumber(null));
            fail("Birth number of reader should not be null");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        createTestData();
        Reader[] readers = readerDAO.findAllReaders().toArray(new Reader[]{});
        for(int i=0;i<readers.length;i++){
            Reader result = readerDAO.findReaderByBirthNumber(readers[i].getBirthNumber());
            assertEquals("Readers are not equals", readers[i], result);
            assertEquals("Correct ID is not return", readers[i].getId(), result.getId());
            assertEquals("Correct first name is not return",readers[i].getFirstName(), result.getFirstName());
            assertEquals("Correct surname is not return", readers[i].getSurname(), result.getSurname());
            assertEquals("Correct birthNumber is not return", readers[i].getBirthNumber(), result.getBirthNumber());
            assertEquals("Correct address is not return", readers[i].getAddress(), result.getAddress());
            assertEquals("Correct email is not return", readers[i].getEmail(), result.getEmail());
            assertEquals("Correct telephoneNumber is not return", readers[i].getTelephoneNumber(), result.getTelephoneNumber());
        }
    }

    public void testFindReaderByEmail() {
        try {
            assertNull(readerDAO.findReaderByEmail(""));
            fail("Email of reader should not be empty");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        try {
            assertNull(readerDAO.findReaderByEmail(null));
            fail("Email of reader should not be null");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        createTestData();
        Reader[] readers = readerDAO.findAllReaders().toArray(new Reader[]{});
        for(int i=0;i<readers.length;i++){
            Reader result = readerDAO.findReaderByEmail(readers[i].getEmail());
            assertEquals("Readers are not equals", readers[i], result);
            assertEquals("Correct ID is not return", readers[i].getId(), result.getId());
            assertEquals("Correct first name is not return",readers[i].getFirstName(), result.getFirstName());
            assertEquals("Correct surname is not return", readers[i].getSurname(), result.getSurname());
            assertEquals("Correct birthNumber is not return", readers[i].getBirthNumber(), result.getBirthNumber());
            assertEquals("Correct address is not return", readers[i].getAddress(), result.getAddress());
            assertEquals("Correct email is not return", readers[i].getEmail(), result.getEmail());
            assertEquals("Correct telephoneNumber is not return", readers[i].getTelephoneNumber(), result.getTelephoneNumber());
        }
    }

    public void testUpdateReader() {
        Reader reader = addReader();
        persist(reader);
        reader.setFirstName(null);
        try {
            readerDAO.updateReader(reader);
            fail("FirstName is null, NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setFirstName("");
        try {
            readerDAO.updateReader(reader);
            fail("FirstName is empty, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setSurname(null);
        try {
            readerDAO.updateReader(reader);
            fail("Surname is null, NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setSurname("");
        try {
            readerDAO.updateReader(reader);
            fail("Surname is empty, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setBirthNumber(null);
        try {
            readerDAO.updateReader(reader);
            fail("Birth number is null, NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setBirthNumber("");
        try {
            readerDAO.updateReader(reader);
            fail("Birth number is empty, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setAddress(null);
        try {
            readerDAO.updateReader(reader);
            fail("Address is null, NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setAddress("");
        try {
            readerDAO.updateReader(reader);
            fail("Address is empty, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setEmail(null);
        try {
            readerDAO.updateReader(reader);
            fail("Email is null, NullPointerException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }
        reader.setEmail("");
        try {
            readerDAO.updateReader(reader);
            fail("Email is empty, IllegalArgumentException has not been thrown");
        } catch (IllegalArgumentException ex) {
            //OK
        }      
        reader.setFirstName("Marie");
        reader.setSurname("Nová");
        reader.setAddress("8859182456");
        reader.setBirthNumber("Praha 5");
        reader.setEmail("adresa@gmail.com");
        reader.setTelephoneNumber("+234455743");
        readerDAO.updateReader(reader);
        Reader reader2 = readerDAO.findReaderById(reader.getId());
        assertEquals("Readers are not equals", reader2, reader);
        assertEquals("Correct ID is not return", reader2.getId(), reader.getId());
        assertEquals("Correct first name is not return",reader2.getFirstName(), reader.getFirstName());
        assertEquals("Correct surname is not return", reader2.getSurname(), reader.getSurname());
        assertEquals("Correct birthNumber is not return", reader2.getBirthNumber(), reader.getBirthNumber());
        assertEquals("Correct address is not return", reader2.getAddress(), reader.getAddress());
        assertEquals("Correct email is not return", reader2.getEmail(), reader.getEmail());
        assertEquals("Correct telephoneNumber is not return", reader2.getTelephoneNumber(), reader.getTelephoneNumber());
    }

    public void testDeleteReader() {
        try {
            readerDAO.deleteReader(null);
            fail("Reader should not be null");
        } catch (IllegalArgumentException ex) {
            // OK
        }
        createTestData();
        Reader[] readers = readerDAO.findAllReaders().toArray(new Reader[]{});
        for(int i=0;i<readers.length;i++){
            em.getTransaction().begin();
            readerDAO.deleteReader(readers[i]);
            em.getTransaction().commit();
        }
        assertEquals("All of objects has not been removed", readerDAO.findAllReaders().size(), 0);
    }
}
TOP

Related Classes of cz.muni.fi.pa165.ReaderDAOImplTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.