package eu.dnetlib.miscutils.functional.xml;

import static org.junit.Assert.*;

import java.io.IOException;

import javax.xml.transform.TransformerFactory;

import org.apache.commons.io.IOUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnit44Runner;
import org.springframework.core.io.ClassPathResource;

@RunWith(MockitoJUnit44Runner.class)
public class ApplyXsltTest {

	TransformerFactory tf = TransformerFactory.newInstance();
	
	private static final Class<?> transformerClass =  net.sf.saxon.TransformerFactoryImpl.class;
	
	@Test
	public void testTransformerFactoryType() {
		assertEquals(tf.getClass(), transformerClass);
	}
	
	@Test
	public void applyXslt() throws IOException {
		String record = IOUtils.toString((new ClassPathResource("/eu/dnetlib/miscutils/functional/xml/sampleRecord.xml")).getInputStream());
		String layout = IOUtils.toString((new ClassPathResource("/eu/dnetlib/miscutils/functional/xml/sampleIndexLayout.xml")).getInputStream());
		String indexXsltOfXslt = IOUtils.toString((new ClassPathResource("/eu/dnetlib/miscutils/functional/xml/layoutToRecordStylesheet.xsl")).getInputStream());
		ApplyXslt applyXslt = new ApplyXslt(IOUtils.toString((new ClassPathResource("/eu/dnetlib/miscutils/functional/xml/recordStylesheet.xsl")).getInputStream()));
		ApplyXslt xslt1 = new ApplyXslt(indexXsltOfXslt);
		String indexXslt = xslt1.evaluate(layout);
		ApplyXslt xslt2 = new ApplyXslt(indexXslt);
		String response = xslt2.evaluate(record);
		System.out.println(response);
		
	}

}
