1
|
package eu.dnetlib.data.collector.plugins.oai;
|
2
|
|
3
|
import static org.junit.Assert.assertEquals;
|
4
|
import static org.junit.Assert.assertNotNull;
|
5
|
import static org.mockito.Mockito.verify;
|
6
|
import static org.mockito.Mockito.when;
|
7
|
|
8
|
import java.util.ArrayList;
|
9
|
import java.util.HashMap;
|
10
|
import java.util.Iterator;
|
11
|
import java.util.List;
|
12
|
|
13
|
import org.junit.Before;
|
14
|
import org.junit.Test;
|
15
|
import org.junit.runner.RunWith;
|
16
|
import org.mockito.Mock;
|
17
|
import org.mockito.internal.verification.Times;
|
18
|
import org.mockito.junit.MockitoJUnitRunner;
|
19
|
|
20
|
import com.google.common.base.Joiner;
|
21
|
import com.google.common.collect.Lists;
|
22
|
|
23
|
import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
|
24
|
import eu.dnetlib.data.collector.rmi.ProtocolDescriptor;
|
25
|
import eu.dnetlib.data.collector.rmi.ProtocolParameter;
|
26
|
|
27
|
@RunWith(MockitoJUnitRunner.class)
|
28
|
public class OaiCollectorPluginTest {
|
29
|
|
30
|
private OaiCollectorPlugin oai;
|
31
|
|
32
|
@Mock
|
33
|
private OaiIteratorFactory oaiIteratorFactory;
|
34
|
|
35
|
private List<String> elements = Lists.newArrayList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12");
|
36
|
|
37
|
private Iterator<String> oaiIterator1 = elements.subList(0, 3).iterator();
|
38
|
private Iterator<String> oaiIterator2 = elements.subList(3, 7).iterator();
|
39
|
private Iterator<String> oaiIterator3 = elements.subList(7, elements.size()).iterator();
|
40
|
|
41
|
private static final String BASE_URL = "http://oai.test.it/oai";
|
42
|
private static final String FORMAT = "oai_dc";
|
43
|
private static final String PROTOCOL = "OAI";
|
44
|
private static final String SET_1 = "set01";
|
45
|
private static final String SET_2 = "set02";
|
46
|
private static final String SET_3 = "set03";
|
47
|
|
48
|
@Before
|
49
|
public void setUp() {
|
50
|
oai = new OaiCollectorPlugin();
|
51
|
oai.setOaiIteratorFactory(oaiIteratorFactory);
|
52
|
oai.setProtocolDescriptor(new ProtocolDescriptor(PROTOCOL, new ArrayList<ProtocolParameter>()));
|
53
|
when(oaiIteratorFactory.newIterator(BASE_URL, FORMAT, SET_1, null, null)).thenReturn(oaiIterator1);
|
54
|
when(oaiIteratorFactory.newIterator(BASE_URL, FORMAT, SET_2, null, null)).thenReturn(oaiIterator2);
|
55
|
when(oaiIteratorFactory.newIterator(BASE_URL, FORMAT, SET_3, null, null)).thenReturn(oaiIterator3);
|
56
|
}
|
57
|
|
58
|
public void test() {
|
59
|
oai = new OaiCollectorPlugin();
|
60
|
}
|
61
|
|
62
|
@Test
|
63
|
public void testGetProtocol() {
|
64
|
assertEquals(PROTOCOL, oai.getProtocol());
|
65
|
}
|
66
|
|
67
|
@Test
|
68
|
public void testCollect() throws Exception {
|
69
|
final InterfaceDescriptor iface = new InterfaceDescriptor();
|
70
|
iface.setId("123");
|
71
|
iface.setProtocol(PROTOCOL);
|
72
|
iface.setBaseUrl(BASE_URL);
|
73
|
iface.setParams(new HashMap<String, String>());
|
74
|
iface.getParams().put("format", FORMAT);
|
75
|
iface.getParams().put("set", Joiner.on(", ").join(SET_1, SET_2, SET_3));
|
76
|
|
77
|
final Iterable<String> records = oai.collect(iface, null, null);
|
78
|
|
79
|
assertNotNull(records);
|
80
|
verify(oaiIteratorFactory, new Times(0)).newIterator(BASE_URL, FORMAT, SET_1, null, null);
|
81
|
verify(oaiIteratorFactory, new Times(0)).newIterator(BASE_URL, FORMAT, SET_2, null, null);
|
82
|
verify(oaiIteratorFactory, new Times(0)).newIterator(BASE_URL, FORMAT, SET_3, null, null);
|
83
|
|
84
|
int count = 0;
|
85
|
for (String s : records) {
|
86
|
System.out.println("RECORD: " + s);
|
87
|
assertEquals("" + count, s);
|
88
|
count++;
|
89
|
}
|
90
|
assertEquals(elements.size(), count);
|
91
|
verify(oaiIteratorFactory).newIterator(BASE_URL, FORMAT, SET_1, null, null);
|
92
|
verify(oaiIteratorFactory).newIterator(BASE_URL, FORMAT, SET_2, null, null);
|
93
|
verify(oaiIteratorFactory).newIterator(BASE_URL, FORMAT, SET_3, null, null);
|
94
|
}
|
95
|
}
|