Project

General

Profile

1
package eu.dnetlib.msro.openaireplus.api.objects;
2

    
3
import java.io.StringReader;
4
import java.util.ArrayList;
5
import java.util.Arrays;
6
import java.util.Properties;
7

    
8
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
9
import org.apache.velocity.app.VelocityEngine;
10
import org.dom4j.Document;
11
import org.dom4j.io.OutputFormat;
12
import org.dom4j.io.SAXReader;
13
import org.dom4j.io.XMLWriter;
14
import org.junit.Before;
15
import org.junit.Test;
16
import org.junit.runner.RunWith;
17
import org.mockito.Mock;
18
import org.mockito.invocation.InvocationOnMock;
19
import org.mockito.runners.MockitoJUnitRunner;
20
import org.mockito.stubbing.Answer;
21

    
22
import static org.mockito.Matchers.anyString;
23
import static org.mockito.Mockito.when;
24

    
25
/**
26
 * Created by michele on 14/12/15.
27
 */
28
@RunWith(MockitoJUnitRunner.class)
29
public class PublicationEntryTest {
30

    
31
	private VelocityEngine ve;
32

    
33
	@Mock
34
	private ISLookUpService lookUpService;
35

    
36
	@Before
37
	public void setUp() throws Exception {
38

    
39
		final Properties props = new Properties();
40
		props.setProperty("resource.loader", "class");
41
		props.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
42
		props.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.Log4JLogChute");
43
		ve = new VelocityEngine();
44
		ve.init(props);
45

    
46
		when(lookUpService.quickSearchProfile(anyString())).thenAnswer(new Answer<Object>() {
47
			@Override
48
			public Object answer(final InvocationOnMock invocation) throws Throwable {
49
				final String query = invocation.getArguments()[0].toString();
50
				if (query.contains("dnet:access_modes")) {
51
					return Arrays.asList("OPEN @@@ Open Access");
52
				} else if (query.contains("dnet:publication_resource")) {
53
					return Arrays.asList("0001 @@@ Journal Article");
54
				} else if (query.contains("dnet:pid_types")) {
55
					return Arrays.asList("oai @@@ Open Archive Initiative", "doi @@@ Digital object identifier");
56
				} else if (query.contains("dnet:languages")) {
57
					return Arrays.asList("ita @@@ Italian");
58
				} else if (query.contains("ContextDSResourceType")) {
59
					return Arrays.asList(
60
							"egi::classification::natsc::math::stats @@@ Statistics and Probability",
61
							"egi::classification::natsc::math::pure @@@ Pure Mathematics",
62
							"egi::classification::natsc::math @@@ Mathematics",
63
							"egi::classification::natsc @@@ Natural Sciences",
64
							"egi::classification @@@ EGI classification scheme",
65
							"egi @@@ EGI");
66
				} else {
67
					return new ArrayList<String>();
68
				}
69
			}
70
		});
71

    
72
		when(lookUpService.getResourceProfileByQuery(anyString())).thenAnswer(new Answer<Object>() {
73
			@Override
74
			public Object answer(final InvocationOnMock invocation) throws Throwable {
75
				return "REPO NAME @@@ repo________";
76
			}
77
		});
78
	}
79

    
80
	@Test
81
	public void testAsIndexRecord() throws Exception {
82
		final PublicationEntry pub = new PublicationEntry();
83
		pub.setOriginalId("ORIG_ID_1234");
84
		pub.setTitle("TEST TITLE <test>");
85
		pub.getAuthors().add("Michele Artini");
86
		pub.getAuthors().add("Claudio Atzori");
87
		pub.getAuthors().add("Alessia Bardi");
88
		pub.setPublisher("Test publisher");
89
		pub.setDescription("DESCRIPTION & DESCRIPTION & DESCRIPTION & DESCRIPTION & DESCRIPTION & DESCRIPTION & DESCRIPTION ");
90
		pub.setLanguage("ita");
91
		pub.setLicenseCode("OPEN");
92
		pub.setResourceType("0001");
93
		pub.setUrl("http://test.it/a=1&b=2");
94
		pub.getPids().add(new PidEntry("doi", "10.000/xyz-123"));
95
		pub.getPids().add(new PidEntry("oai", "oai:1234"));
96
		pub.setCollectedFromId("test________::zenodo");
97
		pub.setHostedById("test________::UNKNOWN");
98
		pub.getLinksToProjects().add("info:eu-repo/grantAgreement/EC/FP7/283595/EU//OpenAIREplus");
99
		pub.getLinksToProjects().add("info:eu-repo/grantAgreement/EC/FP7/244909/EU/Making Capabilities Work/WorkAble");
100
		pub.getContexts().add("egi::classification::natsc::math::pure");
101
		pub.getContexts().add("egi::classification::natsc::math::stats");
102
		final String xml = pub.asOafRecord(ve, lookUpService, "http://oaf/oaf.xsd");
103

    
104
		final Document doc = (new SAXReader()).read(new StringReader(xml));
105

    
106
		final OutputFormat format = OutputFormat.createPrettyPrint();
107

    
108
		final XMLWriter writer = new XMLWriter(System.out, format);
109

    
110
		writer.write(doc);
111

    
112
		/*writer.close();*/
113

    
114
	}
115

    
116
}
(1-1/3)