Skip to content

Package: CreateOperationsMultiContextRunner

CreateOperationsMultiContextRunner

nameinstructionbranchcomplexitylinemethod
CreateOperationsMultiContextRunner(Logger, PersistenceFactory, DataAccessor)
M: 0 C: 20
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 5
100%
M: 0 C: 1
100%
initialize()
M: 0 C: 21
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 5
100%
M: 0 C: 1
100%
lambda$0()
M: 12 C: 4
25%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 3 C: 1
25%
M: 0 C: 1
100%
lambda$1()
M: 0 C: 8
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
persistCascadeIntoThreeContextSavesOPAssertionAlwaysIntoSubjectContextWhenConfigured()
M: 0 C: 142
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 28
100%
M: 0 C: 1
100%
persistReferenceIntoContextBeforeOwnerDoesNotThrowUnpersistedChangeException()
M: 0 C: 49
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
persistTwiceIntoDifferentContextsIsLegal()
M: 0 C: 70
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 13
100%
M: 0 C: 1
100%
persistTwiceIntoSameContextIsInvalid()
M: 0 C: 27
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
persistWithObjectPropertySavesAssertionIntoSubjectContextWhenConfiguredTo()
M: 0 C: 74
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 14
100%
M: 0 C: 1
100%
testPersistCascadeIntoThreeContexts()
M: 0 C: 101
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 17
100%
M: 0 C: 1
100%
testPersistDataPropertyIntoContext()
M: 0 C: 68
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 12
100%
M: 0 C: 1
100%
testPersistEntityWithMappedSuperclassPuttingReferenceIntoDifferentContext()
M: 0 C: 88
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 15
100%
M: 0 C: 1
100%
testPersistEntityWithObjectPropertyWithGeneratedIdentifierAndPutTheReferenceIntoContext()
M: 0 C: 81
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 14
100%
M: 0 C: 1
100%
testPersistObjectPropertyIntoContext()
M: 0 C: 80
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 14
100%
M: 0 C: 1
100%
testPersistPropertiesIntoDifferentContext()
M: 0 C: 89
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 14
100%
M: 0 C: 1
100%
testPersistReferenceIntoContextAndThenOwnerIntoDefault()
M: 0 C: 54
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 12
100%
M: 0 C: 1
100%
testPersistSetWithAttributeContexts()
M: 0 C: 127
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 20
100%
M: 0 C: 1
100%
testPersistWithGeneratedIntoContext()
M: 0 C: 44
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 8
100%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (C) 2019 Czech Technical University in Prague
3: * <p>
4: * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
5: * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
6: * version.
7: * <p>
8: * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
9: * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
10: * details. You should have received a copy of the GNU General Public License along with this program. If not, see
11: * <http://www.gnu.org/licenses/>.
12: */
13: package cz.cvut.kbss.jopa.test.runner;
14:
15: import cz.cvut.kbss.jopa.exceptions.OWLEntityExistsException;
16: import cz.cvut.kbss.jopa.model.descriptors.Descriptor;
17: import cz.cvut.kbss.jopa.model.descriptors.EntityDescriptor;
18: import cz.cvut.kbss.jopa.model.descriptors.ObjectPropertyCollectionDescriptor;
19: import cz.cvut.kbss.jopa.model.query.TypedQuery;
20: import cz.cvut.kbss.jopa.test.*;
21: import cz.cvut.kbss.jopa.test.environment.DataAccessor;
22: import cz.cvut.kbss.jopa.test.environment.Generators;
23: import cz.cvut.kbss.jopa.test.environment.PersistenceFactory;
24: import org.junit.jupiter.api.Test;
25: import org.slf4j.Logger;
26:
27: import java.net.URI;
28: import java.util.Map;
29: import java.util.Set;
30:
31: import static org.junit.jupiter.api.Assertions.*;
32:
33: public abstract class CreateOperationsMultiContextRunner extends BaseRunner {
34:
35: private OWLClassF entityF;
36: private OWLClassK entityK;
37:
38: private EntityDescriptor cOneDescriptor = new EntityDescriptor(CONTEXT_ONE);
39: private EntityDescriptor cTwoDescriptor = new EntityDescriptor(CONTEXT_TWO);
40:
41: public CreateOperationsMultiContextRunner(Logger logger, PersistenceFactory persistenceFactory,
42: DataAccessor dataAccessor) {
43: super(logger, persistenceFactory, dataAccessor);
44: initialize();
45: }
46:
47: private void initialize() {
48: this.entityF = new OWLClassF();
49: entityF.setUri(URI.create("http://krizik.felk.cvut.cz/ontologies/jopa/tests/entityF"));
50: this.entityK = new OWLClassK();
51: entityK.setUri(URI.create("http://krizik.felk.cvut.cz/ontologies/jopa/tests/entityK"));
52: }
53:
54: @Test
55: void testPersistDataPropertyIntoContext() throws Exception {
56: this.em = getEntityManager("MultiPersistDataPropertyIntoContext", false);
57: final Descriptor aDescriptor = new EntityDescriptor();
58: aDescriptor.addAttributeContext(OWLClassA.class.getDeclaredField("stringAttribute"), CONTEXT_ONE);
59: em.getTransaction().begin();
60: em.persist(entityA, aDescriptor);
61: em.getTransaction().commit();
62:
63: final OWLClassA res = findRequired(OWLClassA.class, entityA.getUri(), aDescriptor);
64: assertEquals(entityA.getUri(), res.getUri());
65: assertEquals(entityA.getStringAttribute(), res.getStringAttribute());
66: assertEquals(entityA.getTypes().size(), res.getTypes().size());
67: assertTrue(entityA.getTypes().containsAll(res.getTypes()));
68: }
69:
70: @Test
71: void testPersistObjectPropertyIntoContext() throws Exception {
72: this.em = getEntityManager("MultiPersistObjectPropertyIntoContext", false);
73: final Descriptor dDescriptor = new EntityDescriptor(false);
74: dDescriptor.addAttributeDescriptor(OWLClassD.getOwlClassAField(), cOneDescriptor);
75: em.getTransaction().begin();
76: em.persist(entityD, dDescriptor);
77: em.persist(entityA, cOneDescriptor);
78: em.getTransaction().commit();
79:
80: final OWLClassD resD = findRequired(OWLClassD.class, entityD.getUri(), dDescriptor);
81: assertNotNull(resD.getOwlClassA());
82: final OWLClassA resA = findRequired(OWLClassA.class, entityA.getUri(), cOneDescriptor);
83: assertEquals(resD.getOwlClassA().getUri(), resA.getUri());
84: assertEquals(resD.getOwlClassA().getStringAttribute(), resA.getStringAttribute());
85: assertTrue(resD.getOwlClassA().getTypes().containsAll(resA.getTypes()));
86: }
87:
88: @Test
89: void persistWithObjectPropertySavesAssertionIntoSubjectContextWhenConfiguredTo() throws Exception {
90: this.em = getEntityManager("persistWithObjectPropertySavesAssertionIntoSubjectContextWhenConfiguredTo", false);
91: cOneDescriptor.addAttributeDescriptor(OWLClassD.getOwlClassAField(), cTwoDescriptor);
92: em.getTransaction().begin();
93: em.persist(entityD, cOneDescriptor);
94: em.persist(entityA, cTwoDescriptor);
95: em.getTransaction().commit();
96:
97: final TypedQuery<Boolean> query = em.createNativeQuery("ASK {GRAPH ?g {?d ?hasA ?a .}}", Boolean.class)
98: .setParameter("g", CONTEXT_ONE).setParameter("d", entityD.getUri())
99: .setParameter("hasA", URI.create(Vocabulary.P_HAS_OWL_CLASS_A))
100: .setParameter("a", entityA.getUri());
101: assertTrue(query.getSingleResult());
102: query.setParameter("g", CONTEXT_TWO);
103: assertFalse(query.getSingleResult());
104: }
105:
106: @Test
107: void testPersistWithGeneratedIntoContext() {
108: this.em = getEntityManager("MultiPersistWithGeneratedIntoContext", false);
109: em.getTransaction().begin();
110: em.persist(entityE, cOneDescriptor);
111: em.getTransaction().commit();
112:
113: final OWLClassE res = findRequired(OWLClassE.class, entityE.getUri(), cOneDescriptor);
114: assertEquals(entityE.getUri(), res.getUri());
115: assertEquals(entityE.getStringAttribute(), res.getStringAttribute());
116: }
117:
118: @Test
119: void testPersistReferenceIntoContextAndThenOwnerIntoDefault() {
120: this.em = getEntityManager("ReferenceIntoContextThenOwnerIntoDefault", false);
121: em.getTransaction().begin();
122: em.persist(entityA, cOneDescriptor);
123: em.getTransaction().commit();
124:
125: em.clear();
126: em.getTransaction().begin();
127: entityD.setOwlClassA(entityA);
128: em.persist(entityD);
129: em.getTransaction().commit();
130:
131: final OWLClassD res = findRequired(OWLClassD.class, entityD.getUri());
132: assertNotNull(res.getOwlClassA());
133: }
134:
135: @Test
136: void persistTwiceIntoSameContextIsInvalid() {
137: this.em = getEntityManager("MultiPersistTwiceIntoOneContext", false);
138: em.getTransaction().begin();
139: em.persist(entityA, cOneDescriptor);
140: em.getTransaction().commit();
141:
142: assertThrows(OWLEntityExistsException.class, () -> {
143: em.getTransaction().begin();
144: em.persist(entityA, cOneDescriptor);
145: em.getTransaction().commit();
146: });
147: }
148:
149: @Test
150: void persistTwiceIntoDifferentContextsIsLegal() {
151: this.em = getEntityManager("MultiPersistTwiceIntoDifferentContexts", false);
152: em.getTransaction().begin();
153: em.persist(entityA, cOneDescriptor);
154: em.getTransaction().commit();
155: em.getTransaction().begin();
156: em.persist(entityA, cTwoDescriptor);
157: em.getTransaction().commit();
158:
159: final OWLClassA resOne = findRequired(OWLClassA.class, entityA.getUri(), cOneDescriptor);
160: final OWLClassA resTwo = findRequired(OWLClassA.class, entityA.getUri(), cTwoDescriptor);
161: assertNotSame(resOne, resTwo);
162: assertEquals(resOne.getUri(), resTwo.getUri());
163: assertEquals(resOne.getStringAttribute(), resTwo.getStringAttribute());
164: }
165:
166: @Test
167: void testPersistPropertiesIntoDifferentContext() throws Exception {
168: this.em = getEntityManager("MultiPersistPropertiesIntoDifferentContext", false);
169: final Descriptor bDescriptor = new EntityDescriptor();
170: entityB.setProperties(Generators.createProperties(10));
171: bDescriptor.addAttributeContext(OWLClassB.class.getDeclaredField("properties"), CONTEXT_ONE);
172: em.getTransaction().begin();
173: em.persist(entityB, bDescriptor);
174: em.getTransaction().commit();
175:
176: final OWLClassB res = findRequired(OWLClassB.class, entityB.getUri(), bDescriptor);
177: assertEquals(entityB.getStringAttribute(), res.getStringAttribute());
178: assertEquals(entityB.getProperties().size(), res.getProperties().size());
179:• for (Map.Entry<String, Set<String>> e : res.getProperties().entrySet()) {
180: assertTrue(entityB.getProperties().containsKey(e.getKey()));
181: assertEquals(e.getValue(), entityB.getProperties().get(e.getKey()));
182: }
183: }
184:
185: @Test
186: void testPersistCascadeIntoThreeContexts() throws Exception {
187: this.em = getEntityManager("MultiPersistCascadeIntoThreeContexts", false);
188: final Descriptor gDescriptor = new EntityDescriptor(false);
189: final Descriptor hDescriptor = new EntityDescriptor(CONTEXT_ONE, false);
190: hDescriptor.addAttributeDescriptor(OWLClassH.class.getDeclaredField("owlClassA"), cTwoDescriptor);
191: gDescriptor.addAttributeDescriptor(OWLClassG.class.getDeclaredField("owlClassH"), hDescriptor);
192: em.getTransaction().begin();
193: em.persist(entityG, gDescriptor);
194: assertTrue(em.contains(entityG));
195: assertTrue(em.contains(entityH));
196: assertTrue(em.contains(entityA));
197: em.getTransaction().commit();
198:
199: final OWLClassA resA = findRequired(OWLClassA.class, entityA.getUri(), cTwoDescriptor);
200: final OWLClassH resH = findRequired(OWLClassH.class, entityH.getUri(), hDescriptor);
201: assertSame(resA, resH.getOwlClassA());
202: final OWLClassG resG = findRequired(OWLClassG.class, entityG.getUri(), gDescriptor);
203: assertSame(resH, resG.getOwlClassH());
204: }
205:
206: @Test
207: void persistCascadeIntoThreeContextSavesOPAssertionAlwaysIntoSubjectContextWhenConfigured()
208: throws Exception {
209: this.em = getEntityManager(
210: "persistCascadeIntoThreeContextSavesOPAssertionAlwaysIntoSubjectContextWhenConfigured", false);
211: final Descriptor gDescriptor = new EntityDescriptor();
212: cOneDescriptor.addAttributeDescriptor(OWLClassH.class.getDeclaredField("owlClassA"), cTwoDescriptor);
213: gDescriptor.addAttributeDescriptor(OWLClassG.class.getDeclaredField("owlClassH"), cOneDescriptor);
214: em.getTransaction().begin();
215: em.persist(entityG, gDescriptor);
216: assertTrue(em.contains(entityG));
217: assertTrue(em.contains(entityH));
218: assertTrue(em.contains(entityA));
219: em.getTransaction().commit();
220:
221: assertTrue(em.createNativeQuery("ASK { ?s ?p ?o . }", Boolean.class)
222: .setParameter("s", entityG.getUri())
223: .setParameter("p", URI.create(Vocabulary.P_HAS_H))
224: .setParameter("o", entityH.getUri()).getSingleResult());
225: final TypedQuery<Boolean> query = em.createNativeQuery("ASK {GRAPH ?g { ?s ?p ?o . }}", Boolean.class)
226: .setParameter("g", CONTEXT_ONE)
227: .setParameter("s", entityG.getUri())
228: .setParameter("p", URI.create(Vocabulary.P_HAS_H))
229: .setParameter("o", entityH.getUri());
230: assertFalse(query.getSingleResult());
231: query.setParameter("s", entityH.getUri())
232: .setParameter("p", URI.create(Vocabulary.P_HAS_OWL_CLASS_A))
233: .setParameter("o", entityA.getUri());
234: assertTrue(query.getSingleResult());
235: query.setParameter("g", CONTEXT_TWO);
236: assertFalse(query.getSingleResult());
237: }
238:
239: @Test
240: void testPersistSetWithAttributeContexts() throws Exception {
241: this.em = getEntityManager("MultiPersistSetWithAttributeContexts", false);
242: entityF.setSimpleSet(Generators.createSimpleSet(20));
243: final Descriptor fDescriptor = new EntityDescriptor(false);
244: final ObjectPropertyCollectionDescriptor setDescriptor = new ObjectPropertyCollectionDescriptor(CONTEXT_ONE,
245: OWLClassF.class.getDeclaredField("simpleSet"), false);
246: fDescriptor.addAttributeDescriptor(OWLClassF.class.getDeclaredField("simpleSet"), setDescriptor);
247: setDescriptor.addAttributeContext(OWLClassA.class.getDeclaredField("stringAttribute"), CONTEXT_TWO);
248: setDescriptor.addAttributeContext(OWLClassA.class.getDeclaredField("types"), CONTEXT_TWO);
249: em.getTransaction().begin();
250: em.persist(entityF, fDescriptor);
251:• for (OWLClassA a : entityF.getSimpleSet()) {
252: em.persist(a, setDescriptor.getElementDescriptor());
253: }
254: em.getTransaction().commit();
255:
256: final OWLClassF resF = findRequired(OWLClassF.class, entityF.getUri(), fDescriptor);
257: assertEquals(entityF.getSimpleSet().size(), resF.getSimpleSet().size());
258:• for (OWLClassA a : resF.getSimpleSet()) {
259: final OWLClassA resA = findRequired(OWLClassA.class, a.getUri(), setDescriptor);
260: assertEquals(a.getStringAttribute(), resA.getStringAttribute());
261: assertEquals(a.getTypes(), resA.getTypes());
262: }
263: }
264:
265: @Test
266: void testPersistEntityWithObjectPropertyWithGeneratedIdentifierAndPutTheReferenceIntoContext()
267: throws Exception {
268: this.em = getEntityManager("PersistEntityWithObjectPropertyWithGeneratedIdentifierContexts", true);
269: entityK.setOwlClassE(entityE);
270: assertNull(entityE.getUri());
271: cOneDescriptor.addAttributeDescriptor(OWLClassK.class.getDeclaredField("owlClassE"), cTwoDescriptor);
272: em.getTransaction().begin();
273: em.persist(entityK, cOneDescriptor);
274: em.persist(entityE, cTwoDescriptor);
275: assertNotNull(entityE.getUri());
276: em.getTransaction().commit();
277:
278: final OWLClassE resE = findRequired(OWLClassE.class, entityE.getUri(), cTwoDescriptor);
279: assertEquals(entityE.getStringAttribute(), resE.getStringAttribute());
280: final OWLClassK resK = findRequired(OWLClassK.class, entityK.getUri(), cOneDescriptor);
281: assertEquals(resE, resK.getOwlClassE());
282: }
283:
284: @Test
285: void testPersistEntityWithMappedSuperclassPuttingReferenceIntoDifferentContext() throws Exception {
286: this.em = getEntityManager("PersistEntityWithMappedSuperclassReferenceInContext", true);
287: cOneDescriptor.addAttributeDescriptor(OWLClassQ.getOWlClassAField(), cTwoDescriptor);
288: cOneDescriptor.addAttributeDescriptor(OWLClassQ.getOWlClassAField(), cTwoDescriptor);
289: em.getTransaction().begin();
290: em.persist(entityQ, cOneDescriptor);
291: em.persist(entityA, cTwoDescriptor);
292: em.getTransaction().commit();
293:
294: final OWLClassA resA = findRequired(OWLClassA.class, entityA.getUri(), cTwoDescriptor);
295: final OWLClassQ resQ = findRequired(OWLClassQ.class, entityQ.getUri(), cOneDescriptor);
296: assertEquals(entityQ.getStringAttribute(), resQ.getStringAttribute());
297: assertEquals(entityQ.getParentString(), resQ.getParentString());
298: assertEquals(entityQ.getLabel(), resQ.getLabel());
299: assertNotNull(resQ.getOwlClassA());
300: assertEquals(resA, resQ.getOwlClassA());
301: }
302:
303: @Test
304: void persistReferenceIntoContextBeforeOwnerDoesNotThrowUnpersistedChangeException() throws Exception {
305: this.em =
306: getEntityManager("persistReferenceIntoContextBeforeOwnerDoesNotThrowUnpersistedChangeException", false);
307: cOneDescriptor.addAttributeDescriptor(OWLClassD.getOwlClassAField(), new EntityDescriptor(null));
308: persist(entityA);
309: transactional(() -> em.persist(entityD, cOneDescriptor));
310:
311: final OWLClassD result = findRequired(OWLClassD.class, entityD.getUri(), cOneDescriptor);
312: assertNotNull(result.getOwlClassA());
313: assertEquals(entityA.getStringAttribute(), result.getOwlClassA().getStringAttribute());
314: }
315: }