edu.eci.cosw.hbintro.modelo.pruebas.PersistenceTest.java Source code

Java tutorial

Introduction

Here is the source code for edu.eci.cosw.hbintro.modelo.pruebas.PersistenceTest.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 edu.eci.cosw.hbintro.modelo.pruebas;

import edu.eci.cosw.hbintro.modelo.Producto;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.Test;
import org.hibernate.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Assert;

/**
 *
 * @author hcadavid
 */
public class PersistenceTest {

    private SessionFactory sessionFactory;
    private Session session = null;

    /**
     * Operaciones que se realizan antes de ejecutar el banco de pruebas.
     * En este caso se crea una misma sesin que ser usada en todas las
     * pruebas.
     */
    @Before
    public void setupSession() {

        Configuration configuration = new Configuration();
        //configuration.configure("hibernate.cfg.xml");
        /**
         * PARA LAS PRUEBAS SE USA UNA BASE DE DATOS H2 EN MEMORIA
         */
        configuration.configure("hibernate-inmemory.cfg.xml");
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
                .buildServiceRegistry();
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        session = sessionFactory.openSession();

    }

    /**
     * Operaciones que se realizan cuando finalice la ejecucin de las pruebas.
     * En este caso se cierra la sesi_n y la f_brica de sesiones.
     */
    @After
    public void closeResources() {
        session.close();
        sessionFactory.close();
    }

    /**
     * El objetivo de esta prueba es que el mapeo permita hacer persistentes
     * productos, y luego consultar de forma consistente los mismos
     * Estado inicial: base de datos vaca.
     * Prueba: La consulta de la sumatora del precio de los productos debe
     * ser consistente con los precios de los productos ingresados.
     * 
     */
    @Test
    public void productPersistenceTest() {
        Transaction tx = session.beginTransaction();
        Producto p = new Producto("Producto prueba 1", 222);
        session.save(p);
        p = new Producto("Producto prueba 2", 222);
        session.save(p);

        Query q = session.createQuery("select sum(precio) from Producto");
        List<Long> res = q.list();

        Assert.assertEquals("La prueba de consultar" + " la suma de los precios de los"
                + " productos no da un resultado" + " consistente.", res.get(0), new Long(444));

        tx.commit();
    }

}