1 package de.dlr.shepard.context.references.timeseriesreference;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.junit.jupiter.api.Assertions.assertNull;
5 import static org.mockito.Mockito.when;
6
7 import de.dlr.shepard.BaseTestCase;
8 import de.dlr.shepard.context.references.timeseriesreference.daos.TimeseriesTupleDAO;
9 import de.dlr.shepard.data.timeseries.model.TimeseriesTuple;
10 import java.util.Collections;
11 import java.util.List;
12 import java.util.Map;
13 import java.util.Optional;
14 import org.junit.jupiter.api.Test;
15 import org.mockito.InjectMocks;
16 import org.mockito.Mock;
17 import org.neo4j.ogm.session.Session;
18
19 public class TimeseriesTupleDAOTest extends BaseTestCase {
20
21 @Mock
22 private Session session;
23
24 @InjectMocks
25 private TimeseriesTupleDAO dao = new TimeseriesTupleDAO();
26
27 @Test
28 public void findTest() {
29 var ts = new TimeseriesTuple("meas", "dev", "loc", "symName", "value");
30 var query =
31 """
32 MATCH (t:TimeseriesTuple { measurement: $measurement, device: $device, location: $location, symbolicName: $symbolicName, field: $field }) \
33 MATCH path=(t)-[*0..1]-(n) WHERE n.deleted = FALSE OR n.deleted IS NULL \
34 RETURN t, nodes(path), relationships(path)""";
35
36 when(
37 session.query(
38 TimeseriesTuple.class,
39 query,
40 Map.of("measurement", "meas", "device", "dev", "location", "loc", "symbolicName", "symName", "field", "value")
41 )
42 ).thenReturn(List.of(ts));
43 var actual = dao.find(ts).orElseThrow();
44 assertEquals(ts, actual);
45 }
46
47 @Test
48 public void findTest_notFound() {
49 var query =
50 """
51 MATCH (t:TimeseriesTuple { measurement: $measurement, device: $device, location: $location, symbolicName: $symbolicName, field: $field }) \
52 MATCH path=(t)-[*0..1]-(n) WHERE n.deleted = FALSE OR n.deleted IS NULL \
53 RETURN t, nodes(path), relationships(path)""";
54
55 when(
56 session.query(
57 TimeseriesTuple.class,
58 query,
59 Map.of("measurement", "meas", "device", "dev", "location", "loc", "symbolicName", "symName", "field", "value")
60 )
61 ).thenReturn(Collections.emptyList());
62 var ts = new TimeseriesTuple("meas", "dev", "loc", "symName", "value");
63 var actual = dao.find(ts);
64 assertEquals(Optional.empty(), actual);
65 }
66 }