1 package de.dlr.shepard.context.references.structureddata.daos;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.mockito.Mockito.verify;
5 import static org.mockito.Mockito.when;
6
7 import de.dlr.shepard.BaseTestCase;
8 import de.dlr.shepard.context.collection.entities.DataObject;
9 import de.dlr.shepard.context.references.structureddata.entities.StructuredDataReference;
10 import java.util.Collections;
11 import java.util.List;
12 import org.junit.jupiter.api.Test;
13 import org.mockito.InjectMocks;
14 import org.mockito.Mock;
15 import org.neo4j.ogm.session.Session;
16
17 public class StructuredDataReferenceDAOTest extends BaseTestCase {
18
19 @Mock
20 private Session session;
21
22 @InjectMocks
23 private StructuredDataReferenceDAO dao;
24
25 @Test
26 public void getEntityTypeTest() {
27 var type = dao.getEntityType();
28 assertEquals(StructuredDataReference.class, type);
29 }
30
31 @Test
32 public void findByDataObjectTest() {
33 var obj = new DataObject(1L);
34 var obj2 = new DataObject(100L);
35 var ref = new StructuredDataReference(2L);
36 var ref2 = new StructuredDataReference(3L);
37 var ref3 = new StructuredDataReference(3L);
38 ref.setDataObject(obj);
39 ref2.setDataObject(obj2);
40
41 var query =
42 """
43 MATCH (d:DataObject)-[hr:has_reference]->(r:StructuredDataReference { deleted: FALSE }) WHERE ID(d)=1 \
44 MATCH path=(r)-[*0..1]-(n) WHERE n.deleted = FALSE OR n.deleted IS NULL \
45 RETURN r, nodes(path), relationships(path)""";
46 when(session.query(StructuredDataReference.class, query, Collections.emptyMap())).thenReturn(
47 List.of(ref, ref2, ref3)
48 );
49
50 var actual = dao.findByDataObjectNeo4jId(1L);
51 verify(session).query(StructuredDataReference.class, query, Collections.emptyMap());
52 assertEquals(List.of(ref), actual);
53 }
54
55 @Test
56 public void findByDataObjectShepardIdTest() {
57 var obj = new DataObject(1L);
58 obj.setShepardId(11L);
59 var obj2 = new DataObject(100L);
60 obj2.setShepardId(1001L);
61 var ref = new StructuredDataReference(2L);
62 ref.setShepardId(21L);
63 var ref2 = new StructuredDataReference(3L);
64 ref2.setShepardId(31L);
65 var ref3 = new StructuredDataReference(4L);
66 ref3.setShepardId(41L);
67 ref.setDataObject(obj);
68 ref2.setDataObject(obj2);
69
70 String query =
71 "MATCH (d:DataObject)-[hr:has_reference]->(r:StructuredDataReference { deleted: FALSE }) WHERE d.shepardId=11 MATCH path=(r)-[*0..1]-(n) WHERE n.deleted = FALSE OR n.deleted IS NULL RETURN r, nodes(path), relationships(path)";
72 when(session.query(StructuredDataReference.class, query, Collections.emptyMap())).thenReturn(
73 List.of(ref, ref2, ref3)
74 );
75
76 var actual = dao.findByDataObjectShepardId(obj.getShepardId());
77 verify(session).query(StructuredDataReference.class, query, Collections.emptyMap());
78 assertEquals(List.of(ref), actual);
79 }
80 }