View Javadoc
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  }