/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mx.edu.um.mateo.contabilidad.dao;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import mx.edu.um.mateo.contabilidad.model.OrdenPago;
import mx.edu.um.mateo.general.model.Usuario;
import mx.edu.um.mateo.general.test.BaseDaoTest;
import mx.edu.um.mateo.general.utils.Constantes;
import org.apache.commons.beanutils.BeanUtils;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import org.junit.Test;
import org.junit.runner.RunWith;
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 osoto
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:mateo.xml", "classpath:security.xml"})
@Transactional
public class OrdenPagoDaoTest extends BaseDaoTest {
private OrdenPago ordenPago = null;
Usuario usuario = null;
@Autowired
private OrdenPagoDao instance;
private void inserta(){
usuario = obtieneUsuario();
ordenPago = new OrdenPago();
ordenPago.setDescripcion("Test");
ordenPago.setCheque(false);
ordenPago.setFechaPago(new Date());
ordenPago.setEmpresa(usuario.getEmpresa());
ordenPago.setStatus("A");
ordenPago.setUserCaptura(usuario);
ordenPago.setFechaCaptura(new Date());
ordenPago.setStatusInterno("A");
instance.crea(ordenPago, usuario);
assertNotNull(ordenPago.getId());
}
/**
* Prueba la lista de ordenPagos
*/
@Test
public void testLista() {
Usuario usuario = obtieneUsuario();
OrdenPago ordenPago=null;
for (int i = 0; i < 20; i++) {
ordenPago = new OrdenPago();
ordenPago.setDescripcion("Test");
ordenPago.setCheque(false);
ordenPago.setFechaPago(new Date());
ordenPago.setEmpresa(usuario.getEmpresa());
ordenPago.setStatus("A");
ordenPago.setUserCaptura(usuario);
ordenPago.setFechaCaptura(new Date());
ordenPago.setStatusInterno("A");
instance.crea(ordenPago, usuario);
assertNotNull(ordenPago.getId());
}
Map<String, Object> params;
params = new TreeMap<>();
params.put("empresa", usuario.getEmpresa().getId());
Map<String, Object> result = instance.lista(params);
assertNotNull(result.get(Constantes.ORDENPAGO_LIST));
assertNotNull(result.get(Constantes.CONTAINSKEY_CANTIDAD));
assertEquals(10, ((List<OrdenPago>) result.get(Constantes.ORDENPAGO_LIST)).size());
assertEquals(20, ((Long) result.get(Constantes.CONTAINSKEY_CANTIDAD)).intValue());
}
/**
* Prueba el obtener un ordenPago
*/
@Test
public void testObtiene() {
inserta();
OrdenPago ordenPago1 = instance.obtiene(ordenPago.getId());
assertNotNull(ordenPago1);
}
/**
* Prueba el proceso de creacion del ordenPago
*/
@Test
public void testCrea() {
inserta();
OrdenPago ordenPago1 = instance.obtiene(ordenPago.getId());
assertNotNull(ordenPago1);
}
/**
* Prueba el proceso de actualizacion
*/
@Test
public void testActualiza() {
inserta();
log.debug("OrdenPago {}", ordenPago);
Map<String, Object> params = new TreeMap<>();
params.put("empresa", usuario.getEmpresa().getId());
Map<String, Object> result = instance.lista(params);
List <OrdenPago> lista = (List)result.get(Constantes.ORDENPAGO_LIST);
Integer nRows = lista.size();
OrdenPago ordenPago1 = new OrdenPago();
try {
BeanUtils.copyProperties(ordenPago1, ordenPago);
} catch (IllegalAccessException | InvocationTargetException ex) {
log.error("Error al intentar copiar las propiedades de orden pago");
}
assertNotNull(ordenPago1);
ordenPago1.setDescripcion("test2");
instance.actualiza(ordenPago1, usuario);
currentSession().refresh(ordenPago);
assertEquals("Test", ordenPago.getDescripcion());
assertEquals("test2", ordenPago1.getDescripcion());
//Debe haber dos registros en la lista
// result = instance.lista(params);
// lista = (List)result.get(Constantes.ORDENPPAGO_LIST);
// assertEquals(nRows+1, lista.size());
}
/**
* Prueba el eliminar el ordenPago
*/
@Test
public void testElimina() {
inserta();
Map<String, Object> params = new TreeMap<>();
params.put("empresa", usuario.getEmpresa().getId());
Map<String, Object> result = instance.lista(params);
List <OrdenPago> lista = (List)result.get(Constantes.ORDENPAGO_LIST);
Integer nRows = lista.size();
String descripcion = instance.elimina(ordenPago.getId());
assertEquals(ordenPago.getDescripcion(), descripcion);
OrdenPago ordenPago1 = instance.obtiene(ordenPago.getId());
if(ordenPago1 != null){
fail("Se encontro ordenPago "+ordenPago1);
}
else{
log.debug("Se elimino con exito el ordenPago {}", descripcion);
}
// result = instance.lista(params);
// lista = (List)result.get(Constantes.ORDENPPAGO_LIST);
// assertEquals(nRows, new Integer(lista.size()));
}
}