package eu.dnetlib.iis.wf.importer.concept; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.times; import java.io.InputStream; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import eu.dnetlib.iis.importer.schemas.Concept; import eu.dnetlib.iis.wf.importer.RecordReceiver; /** * @author mhorst * */ @RunWith(MockitoJUnitRunner.class) public class ConceptXmlHandlerTest { private SAXParser saxParser; private ConceptXmlHandler handler; @Mock private RecordReceiver<Concept> receiver; @Captor private ArgumentCaptor<Concept> conceptCaptor; @Before public void init() throws Exception { SAXParserFactory parserFactory = SAXParserFactory.newInstance(); saxParser = parserFactory.newSAXParser(); handler = new ConceptXmlHandler(receiver); } // ----------------------- TESTS --------------------------------- @Test public void testParse() throws Exception { // given String filePath = "/eu/dnetlib/iis/wf/importer/concept/data/input/fet-fp7.xml"; try (InputStream inputStream = ConceptXmlHandlerTest.class.getResourceAsStream(filePath)) { // execute saxParser.parse(inputStream, handler); } // assert verify(receiver, times(3)).receive(conceptCaptor.capture()); assertEquals(3, conceptCaptor.getAllValues().size()); Concept concept = conceptCaptor.getAllValues().get(0); assertEquals("fet-fp7::open::301::284566", concept.getId()); assertEquals("Quantum Propagating Microwaves in Strongly Coupled Environments", concept.getLabel()); assertEquals(3, concept.getParams().size()); assertEquals("284566", concept.getParams().get("CD_PROJECT_NUMBER")); assertEquals("PROMISCE", concept.getParams().get("CD_ACRONYM")); assertEquals("FP7", concept.getParams().get("CD_FRAMEWORK")); concept = conceptCaptor.getAllValues().get(1); assertEquals("fet-fp7::open::301::284584", concept.getId()); assertEquals("Quantum Interferometry with Bose-Einstein Condensates", concept.getLabel()); assertEquals(2, concept.getParams().size()); assertEquals("284584", concept.getParams().get("CD_PROJECT_NUMBER")); assertEquals("FP7", concept.getParams().get("CD_FRAMEWORK")); concept = conceptCaptor.getAllValues().get(2); assertEquals("fet-fp7::open::301", concept.getId()); assertEquals("Challenging current thinking", concept.getLabel()); assertEquals(3, concept.getParams().size()); assertEquals("7.A.SP1.03.19.01", concept.getParams().get("CD_DIVNAME")); assertEquals("ICT-2011.9.1", concept.getParams().get("CD_ABBR")); assertEquals("7.A.SP1.03.19", concept.getParams().get("CD_PARENT_DIVNAME")); } }