-
Notifications
You must be signed in to change notification settings - Fork 14
/
NamedNativeQueryProcessorTest.java
108 lines (89 loc) · 4.38 KB
/
NamedNativeQueryProcessorTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package cz.cvut.kbss.jopa.model.metamodel;
import cz.cvut.kbss.jopa.environment.OWLClassA;
import cz.cvut.kbss.jopa.model.annotations.MappedSuperclass;
import cz.cvut.kbss.jopa.model.annotations.NamedNativeQueries;
import cz.cvut.kbss.jopa.model.annotations.NamedNativeQuery;
import cz.cvut.kbss.jopa.model.annotations.OWLClass;
import cz.cvut.kbss.jopa.query.NamedQueryManager;
import org.junit.Before;
import org.junit.Test;
import java.lang.reflect.Field;
import java.util.Map;
import static org.junit.Assert.*;
public class NamedNativeQueryProcessorTest {
private static final String SELECT_QUERY = "SELECT ?x ?y ?z WHERE { ?x ?y ?z .}";
private static final String SELECT_NAME = "selectQuery";
private static final String ASK_QUERY = "ASK WHERE { ?x a ?type . }";
private static final String ASK_NAME = "askQuery";
private NamedQueryManager queryManager;
private NamedNativeQueryProcessor processor;
@Before
public void setUp() {
this.queryManager = new NamedQueryManager();
this.processor = new NamedNativeQueryProcessor(queryManager);
}
@Test
public void processesSingleQueryDeclaredOnClass() {
processor.processClass(SingleQuery.class);
final String query = queryManager.getQuery(SingleQuery.class.getSimpleName() + "." + SELECT_NAME);
assertNotNull(query);
assertEquals(SELECT_QUERY, query);
}
@NamedNativeQuery(name = "SingleQuery." + SELECT_NAME, query = SELECT_QUERY)
@OWLClass(iri = "http://krizik.felk.cvut.cz/ontologies/jopa/entities#SingleQuery")
private static class SingleQuery {
}
@Test
public void processesNamedNativeQueriesDeclaredOnClass() {
processor.processClass(MultipleQueries.class);
final String select = queryManager.getQuery(MultipleQueries.class.getSimpleName() + "." + SELECT_NAME);
assertEquals(SELECT_QUERY, select);
final String ask = queryManager.getQuery(MultipleQueries.class.getSimpleName() + "." + ASK_NAME);
assertEquals(ASK_QUERY, ask);
}
@NamedNativeQueries({
@NamedNativeQuery(name = "MultipleQueries." + SELECT_NAME, query = SELECT_QUERY),
@NamedNativeQuery(name = "MultipleQueries." + ASK_NAME, query = ASK_QUERY)})
@OWLClass(iri = "http://krizik.felk.cvut.cz/ontologies/jopa/entities#MultipleQueries")
private static class MultipleQueries {
}
@Test
public void doesNothingForClassWithoutNamedNativeQueries() throws Exception {
processor.processClass(OWLClassA.class);
final Field queriesField = NamedQueryManager.class.getDeclaredField("queryMap");
queriesField.setAccessible(true);
final Map<?, ?> queryMap = (Map<?, ?>) queriesField.get(queryManager);
assertTrue(queryMap.isEmpty());
}
@Test
public void processesClassWithCombinationOfNamedNativeQueriesAndNamedNativeQuery() {
processor.processClass(QueryCombination.class);
final String select = queryManager.getQuery(QueryCombination.class.getSimpleName() + "." + SELECT_NAME);
assertEquals(SELECT_QUERY, select);
final String ask = queryManager.getQuery(QueryCombination.class.getSimpleName() + "." + ASK_NAME);
assertEquals(ASK_QUERY, ask);
}
@NamedNativeQueries({
@NamedNativeQuery(name = "QueryCombination." + SELECT_NAME, query = SELECT_QUERY),
})
@NamedNativeQuery(name = "QueryCombination." + ASK_NAME, query = ASK_QUERY)
@OWLClass(iri = "http://krizik.felk.cvut.cz/ontologies/jopa/entities#QueryCombination")
private static class QueryCombination {
}
@Test
public void processClassDiscoversQueriesDeclaredInMappedSuperclass() {
processor.processClass(WithMappedSuperclass.class);
final String select = queryManager.getQuery(Superclass.class.getSimpleName() + "." + SELECT_NAME);
assertEquals(SELECT_QUERY, select);
final String ask = queryManager.getQuery(WithMappedSuperclass.class.getSimpleName() + "." + ASK_NAME);
assertEquals(ASK_QUERY, ask);
}
@MappedSuperclass
@NamedNativeQuery(name = "Superclass." + SELECT_NAME, query = SELECT_QUERY)
private static abstract class Superclass {
}
@NamedNativeQuery(name = "WithMappedSuperclass." + ASK_NAME, query = ASK_QUERY)
@OWLClass(iri = "http://krizik.felk.cvut.cz/ontologies/jopa/entities#WithMappedSuperclass")
private static class WithMappedSuperclass extends Superclass {
}
}