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