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

import static org.junit.Assert.assertTrue;

import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

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.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.ejie.ad74a.model.InformeSocial;
import com.ejie.ad74a.model.InformeSocialPDF;
import com.ejie.ad74a.service.InformeSocialService;
import com.ejie.ad74a.service.documentos.DocumentosService;

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

	@Autowired
	private DocumentosService documentosService;

	@Autowired
	private InformeSocialService informeSocialService;

	@Test
	@Transactional(propagation = Propagation.REQUIRES_NEW)
	// @Rollback(true)
	public void testFindSolicitante() throws JAXBException {

		String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
				+ "<informeSocialDTO><apreciacion02>0</apreciacion02><ayuntamiento02>Prueba</ayuntamiento02><email02>prueba@prueba.com</email02><estaSolaManana02>1</estaSolaManana02><estaSolaNoche02>0</estaSolaNoche02><estaSolaTarde02>0</estaSolaTarde02><fAlta02>2023-07-20T09:01:10+02:00</fAlta02><familiarFallecido02>0</familiarFallecido02><frecuenciaSalidas02>0</frecuenciaSalidas02><idInfSocial02>17</idInfSocial02><observaciones02>prueba asdf</observaciones02><observacionesPs02>pruebaasdf</observacionesPs02><periodoSinVisitas02>0</periodoSinVisitas02><relacionEntorno02>0</relacionEntorno02><sola02>0</sola02><telefono02>633633633</telefono02><trabajadorSoc02>Pepe Perez Martinez</trabajadorSoc02><unidadBase02>234</unidadBase02><visitasAmigos02>0</visitasAmigos02><visitasFamilia02>0</visitasFamilia02><convivientes><conviviente><nombre>Julio Scaeva</nombre><parentesco>Padre</parentesco><fNacimiento>1963-07-20T09:01:10+02:00</fNacimiento></conviviente></convivientes></informeSocialDTO>\r\n";

		// Create JAXB Context
		JAXBContext jaxbContext = JAXBContext.newInstance(InformeSocialPDF.class);

		// Create Marshaller
		Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

		// Required formatting??
		jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

		// Print XML String to Console
		StringWriter sw = new StringWriter();

		InformeSocialPDF inf = new InformeSocialPDF(informeSocialService.find(new InformeSocial(17l)));
		// Write XML to StringWriter
		jaxbMarshaller.marshal(inf, sw);

		// Verify XML Content
		String xmlContent = sw.toString();

		this.documentosService.generarDocumentoFop("D:/taadmin/trunk/datos/ad74a/file/plantillas/informe_social.xsl",
				xmlContent, "", "name.pdf");
		assertTrue("No se ha encontrado", 1 == 1);
	}

}
