package com.ejie.ad74a.dao.test.basic;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.ejie.ad74a.dao.AvisosDao;
import com.ejie.ad74a.model.Avisos;
import com.ejie.ad74a.model.MaestroActores;
import com.ejie.ad74a.model.MaestroSubtiposAviso;
import com.ejie.ad74a.model.MaestroTiposAviso;
import com.ejie.ad74a.model.avisos.AvisosBajaBenef;
import com.ejie.ad74a.util.constantes.OrigenAvisosEnum;
import com.ejie.ad74a.util.constantes.SubTipoAvisoEnum;
import com.ejie.ad74a.util.constantes.TipoAvisoEnum;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:test/application-context.xml")
public class TestAvisosDao {

	@Autowired
	private AvisosDao avisosDao;

	@Test
	@Transactional(propagation = Propagation.REQUIRES_NEW)
	@Rollback(false)
	public void testAvisosXmlClob() {
		Avisos aviso = new Avisos();
		MaestroActores origen = new MaestroActores();
		origen.setIdActor42(Long.valueOf(OrigenAvisosEnum.PS.getId()));
		aviso.setMaestroActoresByOrigen20(origen);
		MaestroActores destino = new MaestroActores();
		destino.setIdActor42(Long.valueOf(OrigenAvisosEnum.DSS.getId()));
		aviso.setMaestroActoresByDestino20(destino);
		aviso.setObservaciones20("Obervaciones");
		MaestroTiposAviso tipoAviso = new MaestroTiposAviso();
		tipoAviso.setIdTipoAviso40(TipoAvisoEnum.ACTUAL.getIdLongValue());
		aviso.setMaestroTiposAviso(tipoAviso);
		MaestroSubtiposAviso subtipoAviso = new MaestroSubtiposAviso();
		subtipoAviso.setIdSubTipoAviso41(SubTipoAvisoEnum.BAJA.getIdLongValue());
		aviso.setMaestroSubtiposAviso(subtipoAviso);
		aviso.setIdSolicitante20(138L);
		aviso.setUsuAlta20("TESTPRUEBA");
		AvisosBajaBenef baja = new AvisosBajaBenef();
		baja.setCanalComunicacion(1);
		baja.setIdLlamada("idLlamada");
		baja.setIdMotivobaja(1L);
		baja.setMantenerInst(1);
		baja.setObservaciones("observaciones");
		baja.setOrigenComunicacion(1);
		aviso.setAvisosBajaBenef(baja);
		aviso = this.avisosDao.add(aviso);
		System.out.println("idAviso: " + aviso.getIdAviso20());
		Avisos avisoFind = this.avisosDao.find(aviso);
		System.out.println("Encontrado: " + avisoFind);

	}

	@Test
	@Transactional(propagation = Propagation.REQUIRES_NEW)
	@Rollback(false)
	public void testFindAvisosXmlClob() {
		Avisos aviso = new Avisos();
		aviso.setIdAviso20(49L);
		aviso = this.avisosDao.find(aviso);

		System.out.println("Encontrado: " + aviso);

	}

}
