Project

General

Profile

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
}
(3-3/4)