Skip to content

Package: UpdateOperationsOnGetReferenceRunner

UpdateOperationsOnGetReferenceRunner

nameinstructionbranchcomplexitylinemethod
UpdateOperationsOnGetReferenceRunner(Logger, PersistenceFactory, DataAccessor)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
assigningGetReferenceResultToInstanceRemovesItFromCacheToPreventSubsequentIncompleteDataRetrieval()
M: 0 C: 78
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 16
100%
M: 0 C: 1
100%
getReferenceResultCanBeUsedAsAttributeValueInUpdate()
M: 0 C: 69
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 11
100%
M: 0 C: 1
100%
getReferenceResultDataAttributesCanBeAssignedNewValuesInUpdate()
M: 0 C: 108
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 22
100%
M: 0 C: 1
100%
getReferenceResultListAttributeCanBeUpdated()
M: 0 C: 103
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 18
100%
M: 0 C: 1
100%
getReferenceResultObjectAttributesCanBeAssignedNewValuesInUpdate()
M: 0 C: 70
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 11
100%
M: 0 C: 1
100%
getReferenceResultPluralObjectAttributeCanBeUpdated()
M: 0 C: 86
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 16
100%
M: 0 C: 1
100%
lambda$1(OWLClassA)
M: 0 C: 7
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$2(OWLClassA, OWLClassA)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$3(OWLClassE, OWLClassE)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$4(OWLClassE, OWLClassE)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
mergeWithFieldValueBeingResultOfGetReferenceRemovesItFromCacheToPreventSubsequentIncompleteDataRetrieval()
M: 0 C: 76
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 16
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.test.*;
16: import cz.cvut.kbss.jopa.test.environment.DataAccessor;
17: import cz.cvut.kbss.jopa.test.environment.Generators;
18: import cz.cvut.kbss.jopa.test.environment.PersistenceFactory;
19: import org.junit.jupiter.api.Test;
20: import org.slf4j.Logger;
21:
22: import java.util.Collections;
23: import java.util.Set;
24: import java.util.stream.Collectors;
25: import java.util.stream.IntStream;
26:
27: import static org.junit.jupiter.api.Assertions.*;
28:
29: public abstract class UpdateOperationsOnGetReferenceRunner extends BaseRunner {
30:
31: protected UpdateOperationsOnGetReferenceRunner(Logger logger, PersistenceFactory persistenceFactory,
32: DataAccessor dataAccessor) {
33: super(logger, persistenceFactory, dataAccessor);
34: }
35:
36: @Test
37: void getReferenceResultCanBeUsedAsAttributeValueInUpdate() {
38: this.em = getEntityManager("getReferenceResultCanBeUsedAsAttributeValueInUpdate", true);
39: entityD.setOwlClassA(null);
40: persist(entityD, entityA);
41:
42: em.getTransaction().begin();
43: final OWLClassD d = findRequired(OWLClassD.class, entityD.getUri());
44: d.setOwlClassA(em.getReference(OWLClassA.class, entityA.getUri()));
45: em.getTransaction().commit();
46:
47: final OWLClassD result = findRequired(OWLClassD.class, entityD.getUri());
48: assertNotNull(result.getOwlClassA());
49: assertEquals(entityA.getUri(), result.getOwlClassA().getUri());
50: }
51:
52: @Test
53: void getReferenceResultDataAttributesCanBeAssignedNewValuesInUpdate() {
54: this.em = getEntityManager("getReferenceResultDataAttributesCanBeAssignedNewValuesInUpdate", true);
55: persist(entityM);
56:
57: em.getTransaction().begin();
58: final OWLClassM m = em.getReference(OWLClassM.class, entityM.getKey());
59: final int iVal = Generators.randomInt();
60: m.setIntAttribute(iVal);
61: assertEquals(iVal, m.getIntAttribute().intValue());
62: final long lVal = System.currentTimeMillis();
63: m.setLongAttribute(lVal);
64: final Set<Integer> intSet = IntStream.generate(Generators::randomInt).limit(5).boxed()
65: .collect(Collectors.toSet());
66: m.setIntegerSet(intSet);
67: em.getTransaction().commit();
68:
69: final OWLClassM result = findRequired(OWLClassM.class, entityM.getKey());
70: assertEquals(iVal, result.getIntAttribute().intValue());
71: assertEquals(lVal, result.getLongAttribute().longValue());
72: assertEquals(intSet, result.getIntegerSet());
73: // Ensure other values were not changed
74: assertEquals(entityM.getBooleanAttribute(), result.getBooleanAttribute());
75: assertEquals(entityM.getEnumAttribute(), result.getEnumAttribute());
76: assertEquals(entityM.getDateAttribute(), result.getDateAttribute());
77: assertEquals(entityM.getDoubleAttribute(), result.getDoubleAttribute());
78: }
79:
80: @Test
81: void getReferenceResultObjectAttributesCanBeAssignedNewValuesInUpdate() {
82: this.em = getEntityManager("getReferenceResultObjectAttributesCanBeAssignedNewValuesInUpdate", true);
83: entityD.setOwlClassA(null);
84: persist(entityD, entityA);
85:
86: em.getTransaction().begin();
87: final OWLClassD d = em.getReference(OWLClassD.class, entityD.getUri());
88: final OWLClassA a = em.getReference(OWLClassA.class, entityA.getUri());
89: d.setOwlClassA(a);
90: em.getTransaction().commit();
91:
92: final OWLClassD result = em.find(OWLClassD.class, entityD.getUri());
93: assertEquals(entityA.getUri(), result.getOwlClassA().getUri());
94: }
95:
96: @Test
97: void getReferenceResultPluralObjectAttributeCanBeUpdated() {
98: this.em = getEntityManager("getReferenceResultPluralObjectAttributeCanBeUpdated", true);
99: final OWLClassJ entityJ = new OWLClassJ(Generators.generateUri());
100: entityJ.setOwlClassA(Collections.singleton(entityA));
101: persist(entityJ);
102:
103: em.getTransaction().begin();
104: final OWLClassJ j = em.getReference(OWLClassJ.class, entityJ.getUri());
105: final OWLClassA newA = new OWLClassA(Generators.generateUri());
106: newA.setStringAttribute("newA");
107: j.getOwlClassA().add(newA);
108: em.persist(newA);
109: em.getTransaction().commit();
110:
111: final OWLClassJ result = findRequired(OWLClassJ.class, entityJ.getUri());
112: assertEquals(j.getOwlClassA().size(), result.getOwlClassA().size());
113: assertTrue(j.getOwlClassA().stream().anyMatch(a -> a.getUri().equals(entityA.getUri())));
114: assertTrue(j.getOwlClassA().stream().anyMatch(a -> a.getUri().equals(newA.getUri())));
115: }
116:
117: @Test
118: void getReferenceResultListAttributeCanBeUpdated() {
119: this.em = getEntityManager("getReferenceResultListAttributeCanBeUpdated", true);
120: final OWLClassK entityK = new OWLClassK();
121: entityK.setReferencedList(Collections.singletonList(entityE));
122: entityK.setSimpleList(Collections.singletonList(entityE));
123: persist(entityK, entityE);
124:
125: em.getTransaction().begin();
126: final OWLClassK upd = em.getReference(OWLClassK.class, entityK.getUri());
127: final OWLClassE newE = new OWLClassE();
128: upd.getReferencedList().add(newE);
129: upd.getSimpleList().add(newE);
130: em.persist(newE);
131: em.getTransaction().commit();
132:
133: final OWLClassK result = findRequired(OWLClassK.class, entityK.getUri());
134: assertEquals(upd.getReferencedList().size(), result.getReferencedList().size());
135: assertEquals(upd.getSimpleList().size(), result.getSimpleList().size());
136: assertTrue(result.getReferencedList().stream().anyMatch(a -> a.getUri().equals(newE.getUri())));
137: assertTrue(result.getSimpleList().stream().anyMatch(a -> a.getUri().equals(newE.getUri())));
138: }
139:
140: @Test
141: void assigningGetReferenceResultToInstanceRemovesItFromCacheToPreventSubsequentIncompleteDataRetrieval() {
142: this.em = getEntityManager(
143: "assigningGetReferenceResultToInstanceRemovesItFromCacheToPreventSubsequentIncompleteDataRetrieval",
144: true);
145: entityD.setOwlClassA(null);
146: persist(entityD, entityA);
147:
148: em.getEntityManagerFactory().getCache().evictAll();
149: em.getTransaction().begin();
150: final OWLClassD d = em.find(OWLClassD.class, entityD.getUri());
151: final OWLClassA a = em.getReference(OWLClassA.class, entityA.getUri());
152: d.setOwlClassA(a);
153: em.getTransaction().commit();
154:
155: final OWLClassD result = findRequired(OWLClassD.class, entityD.getUri());
156: em.detach(result);
157: assertNotNull(result.getOwlClassA());
158: assertNotNull(result.getOwlClassA().getStringAttribute());
159: }
160:
161: @Test
162: void mergeWithFieldValueBeingResultOfGetReferenceRemovesItFromCacheToPreventSubsequentIncompleteDataRetrieval() {
163: this.em = getEntityManager(
164: "mergeWithFieldValueBeingResultOfGetReferenceRemovesItFromCacheToPreventSubsequentIncompleteDataRetrieval",
165: true);
166: entityD.setOwlClassA(null);
167: persist(entityD, entityA);
168:
169: em.getEntityManagerFactory().getCache().evictAll();
170: em.getTransaction().begin();
171: final OWLClassA a = em.getReference(OWLClassA.class, entityA.getUri());
172: entityD.setOwlClassA(a);
173: em.merge(entityD);
174: em.getTransaction().commit();
175:
176: final OWLClassD result = findRequired(OWLClassD.class, entityD.getUri());
177: em.detach(result);
178: assertNotNull(result.getOwlClassA());
179: assertNotNull(result.getOwlClassA().getStringAttribute());
180: }
181: }