Skip to content

Commit 765a5c7

Browse files
committed
nested lazy reference test
1 parent 6dfc260 commit 765a5c7

File tree

2 files changed

+176
-0
lines changed

2 files changed

+176
-0
lines changed

src/test/java/com/arangodb/springframework/core/mapping/RefMappingTest.java

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ public void singleRef() {
6969
public static class SingleReferenceLazyTestEntity extends BasicTestEntity {
7070
@Ref(lazy = true)
7171
private BasicTestEntity entity;
72+
73+
public BasicTestEntity getEntity() {
74+
return entity;
75+
}
7276
}
7377

7478
@Test
@@ -85,6 +89,60 @@ public void singleRefLazy() {
8589
assertThat(document.entity.getId(), is(e1.getId()));
8690
}
8791

92+
public static class DeepReferenceTestEntity extends BasicTestEntity {
93+
@Ref
94+
private SingleReferenceTestEntity entity;
95+
}
96+
97+
@Test
98+
public void deepRef() {
99+
BasicTestEntity e1 = new BasicTestEntity();
100+
template.insert(e1);
101+
102+
SingleReferenceTestEntity e2 = new SingleReferenceTestEntity();
103+
e2.entity = e1;
104+
template.insert(e2);
105+
106+
DeepReferenceTestEntity e3 = new DeepReferenceTestEntity();
107+
e3.entity = e2;
108+
template.insert(e3);
109+
110+
final DeepReferenceTestEntity document = template.find(e3.id, DeepReferenceTestEntity.class).get();
111+
assertThat(document, is(notNullValue()));
112+
assertThat(document.entity, is(notNullValue()));
113+
assertThat(document.entity.id, is(e2.id));
114+
assertThat(document.entity.entity.id, is(e1.id));
115+
}
116+
117+
public static class DeepReferenceLazyTestEntity extends BasicTestEntity {
118+
@Ref(lazy = true)
119+
private SingleReferenceLazyTestEntity entity;
120+
121+
public SingleReferenceLazyTestEntity getEntity() {
122+
return entity;
123+
}
124+
}
125+
126+
@Test
127+
public void deepRefLazy() {
128+
BasicTestEntity e1 = new BasicTestEntity();
129+
template.insert(e1);
130+
131+
SingleReferenceLazyTestEntity e2 = new SingleReferenceLazyTestEntity();
132+
e2.entity = e1;
133+
template.insert(e2);
134+
135+
DeepReferenceLazyTestEntity e3 = new DeepReferenceLazyTestEntity();
136+
e3.entity = e2;
137+
template.insert(e3);
138+
139+
final DeepReferenceLazyTestEntity document = template.find(e3.id, DeepReferenceLazyTestEntity.class).get();
140+
assertThat(document, is(notNullValue()));
141+
assertThat(document.getEntity(), is(notNullValue()));
142+
assertThat(document.getEntity().getId(), is(e2.id));
143+
assertThat(document.getEntity().getEntity().getId(), is(e1.id));
144+
}
145+
88146
public static class MultiReferenceTestEntity extends BasicTestEntity {
89147
@Ref
90148
private Collection<BasicTestEntity> entities;
@@ -161,6 +219,36 @@ public void testNestedRef() {
161219
assertThat(document.sub.entities.iterator().next().id, is(e.id));
162220
}
163221

222+
public static class NestedReferenceLazyTestEntity extends BasicTestEntity {
223+
private NestedReferenceLazySubTestEntity sub;
224+
}
225+
226+
public static class NestedReferenceLazySubTestEntity {
227+
@Ref(lazy = true)
228+
private Collection<BasicTestEntity> entities;
229+
230+
public Collection<BasicTestEntity> getEntities() {
231+
return entities;
232+
}
233+
}
234+
235+
@Test
236+
public void testNestedRefLazy() {
237+
final NestedReferenceLazyTestEntity o = new NestedReferenceLazyTestEntity();
238+
o.sub = new NestedReferenceLazySubTestEntity();
239+
o.sub.entities = new ArrayList<>();
240+
final BasicTestEntity e = new BasicTestEntity();
241+
o.sub.entities.add(e);
242+
template.insert(e);
243+
template.insert(o);
244+
final NestedReferenceLazyTestEntity document = template.find(o.id, NestedReferenceLazyTestEntity.class).get();
245+
assertThat(document, is(notNullValue()));
246+
assertThat(document.sub, is(notNullValue()));
247+
assertThat(document.sub.getEntities(), is(notNullValue()));
248+
assertThat(document.sub.getEntities().size(), is(1));
249+
assertThat(document.sub.getEntities().iterator().next().getId(), is(e.id));
250+
}
251+
164252
public static class ConstructorWithRefParamsTestEntity extends BasicTestEntity {
165253
@Ref
166254
private final BasicTestEntity value1;

src/test/java/com/arangodb/springframework/core/mapping/RefMappingTxTest.java

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ public void singleRef() {
8888
public static class SingleReferenceLazyTestEntity extends BasicTestEntity {
8989
@Ref(lazy = true)
9090
private BasicTestEntity entity;
91+
92+
public BasicTestEntity getEntity() {
93+
return entity;
94+
}
9195
}
9296

9397
@Test
@@ -104,6 +108,60 @@ public void singleRefLazy() {
104108
assertThat(document.entity.getId(), is(e1.getId()));
105109
}
106110

111+
public static class DeepReferenceTestEntity extends BasicTestEntity {
112+
@Ref
113+
private SingleReferenceTestEntity entity;
114+
}
115+
116+
@Test
117+
public void deepRef() {
118+
BasicTestEntity e1 = new BasicTestEntity();
119+
template.insert(e1, insertOpts);
120+
121+
SingleReferenceTestEntity e2 = new SingleReferenceTestEntity();
122+
e2.entity = e1;
123+
template.insert(e2, insertOpts);
124+
125+
DeepReferenceTestEntity e3 = new DeepReferenceTestEntity();
126+
e3.entity = e2;
127+
template.insert(e3, insertOpts);
128+
129+
final DeepReferenceTestEntity document = template.find(e3.id, DeepReferenceTestEntity.class, findOpts).get();
130+
assertThat(document, is(notNullValue()));
131+
assertThat(document.entity, is(notNullValue()));
132+
assertThat(document.entity.id, is(e2.id));
133+
assertThat(document.entity.entity.id, is(e1.id));
134+
}
135+
136+
public static class DeepReferenceLazyTestEntity extends BasicTestEntity {
137+
@Ref(lazy = true)
138+
private SingleReferenceLazyTestEntity entity;
139+
140+
public SingleReferenceLazyTestEntity getEntity() {
141+
return entity;
142+
}
143+
}
144+
145+
@Test
146+
public void deepRefLazy() {
147+
BasicTestEntity e1 = new BasicTestEntity();
148+
template.insert(e1, insertOpts);
149+
150+
SingleReferenceLazyTestEntity e2 = new SingleReferenceLazyTestEntity();
151+
e2.entity = e1;
152+
template.insert(e2, insertOpts);
153+
154+
DeepReferenceLazyTestEntity e3 = new DeepReferenceLazyTestEntity();
155+
e3.entity = e2;
156+
template.insert(e3, insertOpts);
157+
158+
final DeepReferenceLazyTestEntity document = template.find(e3.id, DeepReferenceLazyTestEntity.class, findOpts).get();
159+
assertThat(document, is(notNullValue()));
160+
assertThat(document.getEntity(), is(notNullValue()));
161+
assertThat(document.getEntity().getId(), is(e2.id));
162+
assertThat(document.getEntity().getEntity().getId(), is(e1.id));
163+
}
164+
107165
public static class MultiReferenceTestEntity extends BasicTestEntity {
108166
@Ref
109167
private Collection<BasicTestEntity> entities;
@@ -180,6 +238,36 @@ public void testNestedRef() {
180238
assertThat(document.sub.entities.iterator().next().id, is(e.id));
181239
}
182240

241+
public static class NestedReferenceLazyTestEntity extends BasicTestEntity {
242+
private NestedReferenceLazySubTestEntity sub;
243+
}
244+
245+
public static class NestedReferenceLazySubTestEntity {
246+
@Ref(lazy = true)
247+
private Collection<BasicTestEntity> entities;
248+
249+
public Collection<BasicTestEntity> getEntities() {
250+
return entities;
251+
}
252+
}
253+
254+
@Test
255+
public void testNestedRefLazy() {
256+
final NestedReferenceLazyTestEntity o = new NestedReferenceLazyTestEntity();
257+
o.sub = new NestedReferenceLazySubTestEntity();
258+
o.sub.entities = new ArrayList<>();
259+
final BasicTestEntity e = new BasicTestEntity();
260+
o.sub.entities.add(e);
261+
template.insert(e, insertOpts);
262+
template.insert(o, insertOpts);
263+
final NestedReferenceLazyTestEntity document = template.find(o.id, NestedReferenceLazyTestEntity.class, findOpts).get();
264+
assertThat(document, is(notNullValue()));
265+
assertThat(document.sub, is(notNullValue()));
266+
assertThat(document.sub.getEntities(), is(notNullValue()));
267+
assertThat(document.sub.getEntities().size(), is(1));
268+
assertThat(document.sub.getEntities().iterator().next().getId(), is(e.id));
269+
}
270+
183271
public static class ConstructorWithRefParamsTestEntity extends BasicTestEntity {
184272
@Ref
185273
private final BasicTestEntity value1;

0 commit comments

Comments
 (0)