Package pl.zgora.uz.wmie.fe.test

Source Code of pl.zgora.uz.wmie.fe.test.BaseServiceTest

package pl.zgora.uz.wmie.fe.test;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.DataSetException;
import org.dbunit.dataset.xml.XmlDataSet;
import org.dbunit.dataset.xml.XmlDataSetWriter;
import org.dbunit.operation.DatabaseOperation;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.lang.reflect.Field;
import java.sql.Array;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.List;
import java.util.ArrayList;

import javassist.compiler.ast.Variable;

import pl.zgora.uz.wmie.fe.abstracts.AbstractFactory;
import pl.zgora.uz.wmie.fe.abstracts.GenericDAO;
import pl.zgora.uz.wmie.fe.hbm.classes.Dzial;
import pl.zgora.uz.wmie.fe.hbm.classes.Pracownik;
import pl.zgora.uz.wmie.fe.hbm.classes.Stanowisko;
import pl.zgora.uz.wmie.fe.service.impl.DzialService;
import pl.zgora.uz.wmie.fe.service.BaseService;
import pl.zgora.uz.wmie.fe.util.BusinessUtil;

public abstract class BaseServiceTest<T1 extends BaseService,T2>{
  private T1 serviceObject;
  private String serviceClass=null;
  private static Integer generatedId;

  protected final Log log = LogFactory.getLog(getClass());

 
  public BaseServiceTest(Class<T1> serviceClassP) {
    this.serviceClass=serviceClassP.getSimpleName();
  }
 
  @BeforeClass
  public static void initDataBase() throws Exception{
    // database connection
    Class driverClass = Class.forName("org.firebirdsql.jdbc.FBDriver");
    /*
     * FIXME: takie wyciaganie propertiesow powoduje niepotrzebne
     * ladowanie konfiguracji hibernate trzebna przerobic i wczytac plik
     * hibernate.cfg.xml jako zwyklego xml
    */
    String databaseURL = new Configuration()
    .configure("pl/zgora/uz/wmie/fe/config/hibernate.cfg.xml").getProperty("connection.url");
    if (databaseURL == null) {
      databaseURL = new Configuration().configure(
          "pl/zgora/uz/wmie/fe/config/hibernate.cfg.xml")
          .getProperty("hibernate.connection.url");
    }
    Connection jdbcConnection = DriverManager.getConnection(
        databaseURL, "sysdba",
        "masterkey");
    IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);

    // EKSPORT
//     XmlDataSetWriter exportBase = new XmlDataSetWriter(new FileOutputStream(
//     "c:/dataset.xml"), "UTF-8");
//     exportBase.write(connection.createDataSet());

    // IMPORT
    File file = new File ("");
    XmlDataSet importBase = new XmlDataSet(new FileReader(file.getAbsolutePath()+"/src/datasets/initialDataset.xml"));
    DatabaseOperation.REFRESH.execute(connection, importBase); //moze CLEAN_INSERT
  }
 
  private BaseServiceTest() {
    super();
  }

  /**
   * abstrakcyjna metoda do tworzenia projekcji dla testow
   */
  public abstract ProjectionList setProjections();
  /**
   * abstrakcyjna metoda do tworzenia kryteriow dla testow
   */
  public abstract List<Criterion> setCriterions();
  /**
   * abstrakcyjna metoda do tworzenia ordersow dla testow
   */
  public abstract List<Order> setOrders();

  /**
   * abstrakcyjna metoda ustawiajaca obiekt zapisywany testowo do DB
   */
  public abstract T2 setObject();

 
  @Before
  public void setUp() throws Exception {
    //dzialService = (DzialService) BusinessUtil.findBusiness("DzialService");
    serviceObject = (T1)BusinessUtil.findBusiness(serviceClass);
  }
 
  @Test
  public void saveTest() throws Exception {
//    String databaseClassStr=serviceClass;
//    databaseClassStr=serviceClass.replaceFirst("Service","");
//    Class databaseClass=Class.forName(databaseClassStr);
//    Object dbObject=databaseClass.newInstance();
//   
//    Dzial dzial = new Dzial();
//    dzial.setNazwaDzialu("nowy dzial");
    //dzial.setTyp("E");
    log.info("Start test method: saveTest");
    generatedId = (Integer)serviceObject.save(setObject());
    log.info("End test method: saveTest");
  }
 
  @Test
  public void loadTest() throws Exception {
    log.info("Start test method: loadTest");
    serviceObject.load(1);
    log.info("End test method: loadTest");

  }
 
  @Test
  public void deleteTest() throws Exception {
    log.info("Start test method: deleteTest");
    serviceObject.deleteById(generatedId);
    log.info("End test method: deleteTest");
  }
 
 
 
  @Test
  public void findByParamsProjectionsTest() throws Exception{
    log.info("Start test method: findByParamsProjectionsTest");
    serviceObject.findByParams(setProjections());
    log.info("End test method: findByParamsProjectionsTest");
  }
 
  @Test
  public void findByParamsCriteria() throws Exception{
    log.info("Start test method: findByParamsCriteria");
    List<T2> dList = serviceObject.findByParams(setCriterions());
    log.info("End test method: findByParamsCriteria");
  }
 
 
  @Test
  public void findByParamsProjectionsCriteria() throws Exception{
    log.info("Start test method: findByParamsProjectionsCriteria");
    serviceObject.findByParams(setProjections(), setCriterions());
    log.info("End test method: findByParamsProjectionsCriteria");
  }
 
  @Test
  public void findByParamsProjectionsCriteriaOrder() throws Exception{
    log.info("Start test method: findByParamsProjectionsCriteriaOrder");
    serviceObject.findByParams(setProjections(), setCriterions(), setOrders());
    log.info("End test method: findByParamsProjectionsCriteriaOrder");
  }
 
  @Test
  public void findByParamsProjectionsCriteriaOrderStartIndexRowAmount() throws Exception{
    int startIndex = 0;
    int rowAmount = 10;
    log.info("Start test method: findByParamsProjectionsCriteriaOrderStartIndexRowAmount");
    serviceObject.findByParams(setProjections(), setCriterions(), setOrders(), startIndex, rowAmount);
    log.info("End test method: findByParamsProjectionsCriteriaOrderStartIndexRowAmount");
  }
 
  @Test
  public void getRowCountCriteria() throws Exception{
    log.info("Start test method: getRowCountCriteria");
    serviceObject.getRowCount(setCriterions());
    log.info("End test method: getRowCountCriteria");
  }
 
  @Test
  public void getRowCountProjectionCriteria() throws Exception{
    log.info("Start test method: getRowCountProjectionCriteria");
    serviceObject.getRowCount(setProjections(), setCriterions());
    log.info("End test method: getRowCountProjectionCriteria");
  }
  
  @Test
  public void findAllTest() throws Exception {
    log.info("Start test method: findAllTest");
    serviceObject.findAll();
    log.info("End test method: findAllTest");
  }

  @After
  public void cleanUp() {
    //dzialService = null;
    serviceObject=null;
  }

  public static Integer getGeneratedId() {
    return generatedId;
  }

  public static void setGeneratedId(Integer generatedId) {
    BaseServiceTest.generatedId = generatedId;
  }

}
TOP

Related Classes of pl.zgora.uz.wmie.fe.test.BaseServiceTest

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.