Project

General

Profile

1 28360 alessia.ba
package eu.dnetlib.openaire.exporter;
2
3 35906 alessia.ba
import java.io.IOException;
4
5
import org.antlr.stringtemplate.StringTemplate;
6
import org.apache.commons.io.IOUtils;
7 28360 alessia.ba
import org.junit.Before;
8
import org.junit.Test;
9 35906 alessia.ba
import org.springframework.core.io.ClassPathResource;
10
import org.springframework.core.io.Resource;
11 28360 alessia.ba
12 43079 alessia.ba
import static org.junit.Assert.assertEquals;
13
14 28360 alessia.ba
public class ProjectsControllerTest {
15
16 35906 alessia.ba
	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 28360 alessia.ba
	private ProjectsController controller;
20
	private ProjectQueryParams params;
21
22
	@Before
23
	public void setup() {
24
		controller = new ProjectsController();
25 35906 alessia.ba
		Resource template = new ClassPathResource(queryTemplate);
26
27
		controller.setProjectsFundingQueryTemplate(template);
28 28360 alessia.ba
		params = new ProjectQueryParams();
29
	}
30
31
	@Test
32 35906 alessia.ba
	public void testObtainFP7Query() throws IllegalArgumentException, IOException {
33 28360 alessia.ba
		params.setFundingProgramme("FP7");
34 36359 alessia.ba
		params.setFundingPath(null);
35 35906 alessia.ba
		String res = controller.obtainQuery(params);
36
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
37 37854 alessia.ba
		st.setAttribute("fundingprefix", "ec__________::EC::FP7::");
38 28360 alessia.ba
		System.out.println(res);
39 36359 alessia.ba
		System.out.println(st);
40 35906 alessia.ba
		assertEquals(st.toString(), res);
41 28360 alessia.ba
	}
42
43
	@Test
44 36354 alessia.ba
	public void testObtainFP7QuerySP1() throws IllegalArgumentException, IOException {
45
		params.setFundingProgramme("FP7");
46 36359 alessia.ba
		params.setFundingPath("SP1");
47 36354 alessia.ba
		String res = controller.obtainQuery(params);
48
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
49 37854 alessia.ba
		st.setAttribute("fundingprefix", "ec__________::EC::FP7::SP1");
50 36354 alessia.ba
		System.out.println(res);
51
		assertEquals(st.toString(), res);
52
	}
53
54
	@Test
55 36357 alessia.ba
	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 37854 alessia.ba
		st.setAttribute("fundingprefix", "ec__________::EC::FP7::SP1::HEALTH");
61 36357 alessia.ba
		System.out.println(res);
62
		assertEquals(st.toString(), res);
63
	}
64
65
	@Test
66 36359 alessia.ba
	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 37854 alessia.ba
		st.setAttribute("fundingprefix", "ec__________::EC::FP7::%::HEALTH");
72 36359 alessia.ba
		System.out.println(res);
73
		assertEquals(st.toString(), res);
74
	}
75
76
	@Test
77 35906 alessia.ba
	public void testObtainWellcomeTrustQuery() throws IllegalArgumentException, IOException {
78 28360 alessia.ba
		params.setFundingProgramme("WT");
79 36359 alessia.ba
		params.setFundingPath(null);
80 35906 alessia.ba
		String res = controller.obtainQuery(params);
81
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
82
		st.setAttribute("fundingprefix", "wt__________::WT::");
83 28360 alessia.ba
		System.out.println(res);
84 35906 alessia.ba
		assertEquals(st.toString(), res);
85 28360 alessia.ba
	}
86
87 29219 alessia.ba
	@Test
88 35906 alessia.ba
	public void testObtainFCTQuery() throws IllegalArgumentException, IOException {
89 33397 alessia.ba
		params.setFundingProgramme("FCT");
90 36359 alessia.ba
		params.setFundingPath(null);
91 35906 alessia.ba
		String res = controller.obtainQuery(params);
92
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
93 37854 alessia.ba
		st.setAttribute("fundingprefix", "fct_________::FCT::");
94 33397 alessia.ba
		System.out.println(res);
95 35906 alessia.ba
		assertEquals(st.toString() + "", res);
96 33397 alessia.ba
	}
97
98 35533 alessia.ba
	@Test
99 35906 alessia.ba
	public void testQueryWithDateParams() throws IllegalArgumentException, IOException {
100 35533 alessia.ba
		params.setFundingProgramme("WT");
101 36359 alessia.ba
		params.setFundingPath(null);
102 43079 alessia.ba
		params.setStartFrom("2015-05-04");
103 35906 alessia.ba
		String res = controller.obtainQuery(params);
104 35533 alessia.ba
		System.out.println(res);
105 35906 alessia.ba
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream()));
106
		st.setAttribute("fundingprefix", "wt__________::WT::");
107 43079 alessia.ba
		String q = st.toString() + " AND p.startdate >= '2015-05-04'";
108 35906 alessia.ba
		assertEquals(q, res);
109 35533 alessia.ba
	}
110
111 28360 alessia.ba
}