Project

General

Profile

1
package eu.dnetlib.openaire.exporter;
2

    
3
import static org.junit.Assert.assertEquals;
4

    
5
import java.io.IOException;
6

    
7
import org.antlr.stringtemplate.StringTemplate;
8
import org.apache.commons.io.IOUtils;
9
import org.junit.Before;
10
import org.junit.Test;
11
import org.springframework.core.io.ClassPathResource;
12
import org.springframework.core.io.Resource;
13

    
14
public class ProjectsControllerTest {
15

    
16
	private String queryTemplate = "/eu/dnetlib/openaire/exporter/sql/projects_fundings.sql.st";
17
	private Resource expectedQueryTemplate = new ClassPathResource("/eu/dnetlib/openaire/exporter/sql/expected_projects_fundings.sql.st");
18

    
19
	private ProjectsController controller;
20
	private ProjectQueryParams params;
21

    
22
	@Before
23
	public void setup() {
24
		controller = new ProjectsController();
25
		Resource template = new ClassPathResource(queryTemplate);
26

    
27
		controller.setProjectsFundingQueryTemplate(template);
28
		params = new ProjectQueryParams();
29
	}
30

    
31
	@Test
32
	public void testObtainFP7Query() throws IllegalArgumentException, IOException {
33
		params.setFundingProgramme("FP7");
34
		params.setFundingPath(null);
35
		String res = controller.obtainQuery(params);
36
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
37
		st.setAttribute("fundingprefix", "corda_______::FP7::");
38
		System.out.println(res);
39
		System.out.println(st);
40
		assertEquals(st.toString(), res);
41
	}
42

    
43
	@Test
44
	public void testObtainFP7QuerySP1() throws IllegalArgumentException, IOException {
45
		params.setFundingProgramme("FP7");
46
		params.setFundingPath("SP1");
47
		String res = controller.obtainQuery(params);
48
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
49
		st.setAttribute("fundingprefix", "corda_______::FP7::SP1");
50
		System.out.println(res);
51
		assertEquals(st.toString(), res);
52
	}
53

    
54
	@Test
55
	public void testObtainFP7QueryHealth() throws IllegalArgumentException, IOException {
56
		params.setFundingProgramme("FP7");
57
		params.setFundingPath("SP1::HEALTH");
58
		String res = controller.obtainQuery(params);
59
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
60
		st.setAttribute("fundingprefix", "corda_______::FP7::SP1::HEALTH");
61
		System.out.println(res);
62
		assertEquals(st.toString(), res);
63
	}
64

    
65
	@Test
66
	public void testObtainFP7QueryHealth2() throws IllegalArgumentException, IOException {
67
		params.setFundingProgramme("FP7");
68
		params.setFundingPath("%::HEALTH");
69
		String res = controller.obtainQuery(params);
70
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
71
		st.setAttribute("fundingprefix", "corda_______::FP7::%::HEALTH");
72
		System.out.println(res);
73
		assertEquals(st.toString(), res);
74
	}
75

    
76
	@Test
77
	public void testObtainWellcomeTrustQuery() throws IllegalArgumentException, IOException {
78
		params.setFundingProgramme("WT");
79
		params.setFundingPath(null);
80
		String res = controller.obtainQuery(params);
81
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
82
		st.setAttribute("fundingprefix", "wt__________::WT::");
83
		System.out.println(res);
84
		assertEquals(st.toString(), res);
85
	}
86

    
87
	@Test
88
	public void testObtainFCTQuery() throws IllegalArgumentException, IOException {
89
		params.setFundingProgramme("FCT");
90
		params.setFundingPath(null);
91
		String res = controller.obtainQuery(params);
92
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
93
		st.setAttribute("fundingprefix", "fct_________::");
94
		System.out.println(res);
95
		assertEquals(st.toString() + "", res);
96
	}
97

    
98
	@Test
99
	public void testQueryWithDateParams() throws IllegalArgumentException, IOException {
100
		params.setFundingProgramme("WT");
101
		params.setFundingPath(null);
102
		params.setStartFrom("2015");
103
		String res = controller.obtainQuery(params);
104
		System.out.println(res);
105
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
106
		st.setAttribute("fundingprefix", "wt__________::WT::");
107
		String q = st.toString() + " AND p.startdate >= '2015'";
108
		assertEquals(q, res);
109
	}
110

    
111
}
(3-3/3)