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