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

import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.util.List;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.TextMessage;

import org.junit.Assert;
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.jms.service.PlateaJMSService;
import com.ejie.ad74a.jms.service.PlateaJMSServiceImpl;
import com.ejie.ad74a.model.Estados;
import com.ejie.ad74a.model.Prueba;
import com.ejie.ad74a.service.EstadosService;

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

	@Autowired
	private EstadosService estadoService;

	@Test
	@Transactional(propagation = Propagation.REQUIRES_NEW)
	// @Rollback(true)
	public void testInsertEstado() {
		Estados estado = new Estados();

		estado.setDescripcionEs30("Estado desc es");
		estado.setDescripcionEu30("Estado desc eu");
		estado = this.estadoService.add(estado);
		assertTrue("No se ha grabado correctamente", estado.getIdEstado30() != null);
	}

	@Test
	@Transactional(propagation = Propagation.REQUIRES_NEW)
	// @Rollback(true)
	public void testFindAllEstado() {
		Estados estado = new Estados();

		estado.setDescripcionEs30("Estado desc es");
		estado.setDescripcionEu30("Estado desc eu");
		estado = this.estadoService.add(estado);
		assertTrue("No se ha grabado correctamente", estado.getIdEstado30() != null);

		Estados estadoFind = new Estados();
		estadoFind.setIdEstado30(estado.getIdEstado30());
		List<Estados> listaEstados = this.estadoService.findAll(estadoFind, null);
		assertTrue("No se ha recuperado el estado", listaEstados.size() > 0);
	}

	@Test
	@Transactional(propagation = Propagation.REQUIRES_NEW)
	// @Rollback(true)
	public void testUpdateEstado() {
		Estados estado = new Estados();

		estado.setDescripcionEs30("Des estado es");
		estado.setDescripcionEu30("Des estado eu");
		estado = this.estadoService.add(estado);
		assertTrue("No se ha grabado correctamente", estado.getIdEstado30() != null);

		Estados estadoUpdate = new Estados();
		estadoUpdate.setIdEstado30(estado.getIdEstado30());
		estadoUpdate.setDescripcionEs30("Des estado modif es");
		estadoUpdate.setDescripcionEu30("Des estado modif eu");

		this.estadoService.update(estadoUpdate);

		Estados estadoFind = new Estados();
		estadoFind.setIdEstado30(estado.getIdEstado30());
		List<Estados> listaEstados = this.estadoService.findAll(estadoFind, null);
		assertTrue("No se ha recuperado el estado", listaEstados.size() > 0);
		assertTrue("No se ha modificado la desc es del estado", listaEstados.get(0).getDescripcionEs30().contains("modif"));
		assertTrue("No se ha modificado la desc eu del estado", listaEstados.get(0).getDescripcionEu30().contains("modif"));
	}

}
