/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mx.edu.um.mateo.rh.dao;
import java.util.*;
import mx.edu.um.mateo.general.utils.Constantes;
import mx.edu.um.mateo.general.model.Empresa;
import mx.edu.um.mateo.general.model.Organizacion;
import mx.edu.um.mateo.general.model.Rol;
import mx.edu.um.mateo.general.model.Usuario;
import mx.edu.um.mateo.inventario.model.Almacen;
import mx.edu.um.mateo.rh.model.Puesto;
import mx.edu.um.mateo.rh.model.Seccion;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
/**
*
* @author semdariobarbaamaya
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:mateo.xml", "classpath:security.xml"})
@Transactional
public class PuestoDaoTest {
private static final Logger log = LoggerFactory.getLogger(PuestoDaoTest.class);
@Autowired
private SeccionDao seccionDao;
@Autowired
private PuestoDao instance;
@Autowired
private SessionFactory sessionFactory;
private Session currentSession() {
return sessionFactory.getCurrentSession();
}
/**
* Test of lista method, of class PuestoDao.
*/
@SuppressWarnings("unchecked")
@Test
public void debieraMostrarListaDePuestos() {
log.debug("Debiera mostrar lista de puestos");
Organizacion organizacion = new Organizacion("tst-01", "test-01", "test-01");
currentSession().save(organizacion);
Seccion seccion = null;
for (int i = 0; i < 5; i++) {
seccion = new Seccion();
seccion.setId((long) i);
seccion.setCategoriaId("1" + i);
seccion.setMaximo(Float.NaN);
seccion.setMinimo(Float.NaN);
seccion.setNombre("nombre" + i);
seccion.setRangoAcademico(Float.NaN);
currentSession().save(seccion);
}
Seccion seccion2 = seccionDao.obtiene(seccion.getId());
seccionDao.graba(seccion2);
Empresa empresa = new Empresa("tst-01", "test-01", "test-01", "000000000001", organizacion);
currentSession().save(empresa);
Almacen almacen = new Almacen("TST", "TEST", empresa);
currentSession().save(almacen);
Usuario usuario = new Usuario("usaername", "password", "nombre");
usuario.setCorreo("algo@um.edu.mx");
usuario.setUsername("test");
usuario.setPassword("test");
usuario.setAlmacen(almacen);
usuario.setEmpresa(empresa);
currentSession().save(usuario);
for (Integer i = 0; i < 20; i++) {
Puesto puesto = new Puesto("descripcion" + i, empresa);
puesto.setCategoria(i);
puesto.setMaximo(i);
puesto.setMinimo(i);
puesto.setRangoAcademico(Double.NaN);
puesto.setStatus("a");
instance.graba(puesto, usuario);
}
Map<String, Object> params = new HashMap<>();
params.put("empresa", empresa.getId());
Map<String, Object> result = instance.lista(params);
assertNotNull(result.get(Constantes.PUESTO_LIST));
assertNotNull(result.get("cantidad"));
assertEquals(10, ((List<Puesto>) result.get(Constantes.PUESTO_LIST)).size());
assertEquals(20, ((Long) result.get("cantidad")).intValue());
}
/**
* Test of obtiene method, of class PuestoDao.
*/
@Test
public void debieraObtenerPuesto() {
log.debug("Debiera obtener puesto");
Organizacion organizacion = new Organizacion("tst-01", "test-01", "test-01");
currentSession().save(organizacion);
Empresa empresa = new Empresa("tst-01", "test-01", "test-01", "000000000001", organizacion);
currentSession().save(empresa);
Seccion seccion = new Seccion();
seccion.setId(new Long(1));
seccion.setCategoriaId("x");
seccion.setMaximo(Float.NaN);
seccion.setMinimo(Float.NaN);
seccion.setNombre("nombre");
seccion.setRangoAcademico(Float.NaN);
currentSession().save(seccion);
currentSession().save(seccion);
Almacen almacen = new Almacen("TST", "TEST", empresa);
currentSession().save(almacen);
Puesto puesto = new Puesto("tst-01", empresa);
int i = 8;
puesto.setCategoria(i);
puesto.setMaximo(i);
puesto.setMinimo(i);
puesto.setRangoAcademico(Double.NaN);
puesto.setStatus("a");
Usuario usuario = new Usuario("usaername", "password", "nombre");
usuario.setCorreo("algo@um.edu.mx");
usuario.setUsername("test");
usuario.setAlmacen(almacen);
usuario.setEmpresa(empresa);
usuario.setPassword("test");
currentSession().save(usuario);
instance.graba(puesto, usuario);
Long id = puesto.getId();
Puesto result = instance.obtiene(id);
assertEquals("tst-01", result.getDescripcion());
}
/**
* Test of graba method, of class PuestoDao.
*/
@Test
public void debieraCrearPuesto() {
log.debug("Debiera crear puesto");
Organizacion organizacion = new Organizacion("tst-01", "test-01", "test-01");
currentSession().save(organizacion);
Empresa empresa = new Empresa("tst-01", "test-01", "test-01", "000000000001", organizacion);
currentSession().save(empresa);
Rol rol = new Rol("ROLE_TEST");
currentSession().save(rol);
Set<Rol> roles = new HashSet<>();
roles.add(rol);
Almacen almacen = new Almacen("TST", "TEST", empresa);
currentSession().save(almacen);
Usuario usuario = new Usuario("username", "password", "nombre");
usuario.setCorreo("algo@um.edu.mx");
usuario.setUsername("test");
usuario.setPassword("test");
usuario.setEmpresa(empresa);
usuario.setAlmacen(almacen);
usuario.setRoles(roles);
currentSession().save(usuario);
Long id = usuario.getId();
Seccion seccion = new Seccion();
seccion.setId(new Long(1));
seccion.setCategoriaId("x");
seccion.setMaximo(Float.NaN);
seccion.setMinimo(Float.NaN);
seccion.setNombre("nombre");
seccion.setRangoAcademico(Float.NaN);
currentSession().save(seccion);
assertNotNull(id);
Puesto puesto = new Puesto("tst-01", empresa);
int i = 4;
puesto.setCategoria(i);
puesto.setMaximo(i);
puesto.setMinimo(i);
puesto.setRangoAcademico(Double.NaN);
puesto.setStatus("a");
puesto = instance.graba(puesto, usuario);
assertNotNull(puesto);
assertNotNull(puesto.getId());
assertEquals("tst-01", puesto.getDescripcion());
}
/**
* Test of actualiza method, of class PuestoDao.
*/
@Test
public void debieraActualizarPuesto() {
log.debug("Debiera actualizar puesto");
Organizacion organizacion = new Organizacion("tst-01", "test-01", "test-01");
currentSession().save(organizacion);
Empresa empresa = new Empresa("tst-01", "test-01", "test-01", "000000000001", organizacion);
currentSession().save(empresa);
Rol rol = new Rol("ROLE_TEST");
currentSession().save(rol);
Set<Rol> roles = new HashSet<>();
roles.add(rol);
Almacen almacen = new Almacen("TST", "TEST", empresa);
currentSession().save(almacen);
Usuario usuario = new Usuario("username", "password", "nombre");
usuario.setCorreo("algo@um.edu.mx");
usuario.setUsername("test");
usuario.setPassword("test");
usuario.setEmpresa(empresa);
usuario.setAlmacen(almacen);
usuario.setRoles(roles);
currentSession().save(usuario);
Seccion seccion = new Seccion();
seccion.setId(new Long(1));
seccion.setCategoriaId("x");
seccion.setMaximo(Float.NaN);
seccion.setMinimo(Float.NaN);
seccion.setNombre("nombre");
seccion.setRangoAcademico(Float.NaN);
currentSession().save(seccion);
Long id = usuario.getId();
assertNotNull(id);
Puesto puesto = new Puesto("tst-01", empresa);
int i = 4;
puesto.setCategoria(i);
puesto.setMaximo(i);
puesto.setMinimo(i);
puesto.setRangoAcademico(Double.NaN);
puesto.setStatus("a");
puesto = instance.graba(puesto, usuario);
assertNotNull(puesto);
assertNotNull(puesto.getId());
assertEquals("tst-01", puesto.getDescripcion());
puesto.setDescripcion("PRUEBA");
instance.graba(puesto, usuario);
Puesto prueba = instance.obtiene(puesto.getId());
assertNotNull(prueba);
assertEquals("PRUEBA", prueba.getDescripcion());
}
/**
* Test of elimina method, of class PuestoDao.
*/
@Test
public void debieraEliminarPuesto() throws Exception {
log.debug("Debiera actualizar puesto");
Organizacion organizacion = new Organizacion("tst-01", "test-01", "test-01");
currentSession().save(organizacion);
Empresa empresa = new Empresa("tst-01", "test-01", "test-01", "000000000001", organizacion);
currentSession().save(empresa);
Rol rol = new Rol("ROLE_TEST");
currentSession().save(rol);
Set<Rol> roles = new HashSet<>();
roles.add(rol);
Almacen almacen = new Almacen("TST", "TEST", empresa);
currentSession().save(almacen);
Usuario usuario = new Usuario("username", "password", "name");
usuario.setCorreo("algo@um.edu.mx");
usuario.setUsername("test");
usuario.setPassword("test");
usuario.setEmpresa(empresa);
usuario.setAlmacen(almacen);
usuario.setRoles(roles);
currentSession().save(usuario);
Seccion seccion = new Seccion();
seccion.setId(new Long(1));
seccion.setCategoriaId("x");
seccion.setMaximo(Float.NaN);
seccion.setMinimo(Float.NaN);
seccion.setNombre("nombre");
seccion.setRangoAcademico(Float.NaN);
currentSession().save(seccion);
Long id = usuario.getId();
assertNotNull(id);
Puesto puesto = new Puesto("tst-01", empresa);
int i = 8;
puesto.setCategoria(i);
puesto.setMaximo(i);
puesto.setMinimo(i);
puesto.setRangoAcademico(Double.NaN);
puesto.setStatus("a");
puesto = instance.graba(puesto, usuario);
assertNotNull(puesto);
assertNotNull(puesto.getId());
assertEquals("tst-01", puesto.getDescripcion());
String nombre = instance.elimina(puesto.getId());
assertNotNull(nombre);
assertEquals("tst-01", nombre);
Puesto prueba = instance.obtiene(puesto.getId());
assertNull(prueba);
}
}