View Javadoc
1   package de.dlr.shepard.context.references.uri.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.uri.entities.URIReference;
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 URIReferenceDAOTest extends BaseTestCase {
18  
19    @Mock
20    private Session session;
21  
22    @InjectMocks
23    private URIReferenceDAO dao;
24  
25    @Test
26    public void getEntityTypeTest() {
27      var type = dao.getEntityType();
28      assertEquals(URIReference.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 URIReference(2L);
36      var ref2 = new URIReference(3L);
37      var ref3 = new URIReference(4L);
38      ref.setDataObject(obj);
39      ref2.setDataObject(obj2);
40  
41      var query =
42        """
43        MATCH (d:DataObject)-[hr:has_reference]->(r:URIReference { 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(URIReference.class, query, Collections.emptyMap())).thenReturn(List.of(ref, ref2, ref3));
47  
48      var actual = dao.findByDataObjectNeo4jId(1L);
49      verify(session).query(URIReference.class, query, Collections.emptyMap());
50      assertEquals(List.of(ref), actual);
51    }
52  
53    @Test
54    public void findByDataObjectShepardIdTest() {
55      var obj = new DataObject(1L);
56      obj.setShepardId(11L);
57      var obj2 = new DataObject(100L);
58      obj2.setShepardId(1001L);
59      var ref = new URIReference(2L);
60      ref.setShepardId(21L);
61      var ref2 = new URIReference(3L);
62      ref2.setShepardId(31L);
63      var ref3 = new URIReference(4L);
64      ref3.setShepardId(41L);
65      ref.setDataObject(obj);
66      ref2.setDataObject(obj2);
67  
68      var query =
69        """
70        MATCH (d:DataObject)-[hr:has_reference]->(r:URIReference { deleted: FALSE }) WHERE d.shepardId=11 \
71        MATCH path=(r)-[*0..1]-(n) WHERE n.deleted = FALSE OR n.deleted IS NULL \
72        RETURN r, nodes(path), relationships(path)""";
73      when(session.query(URIReference.class, query, Collections.emptyMap())).thenReturn(List.of(ref, ref2, ref3));
74  
75      var actual = dao.findByDataObjectShepardId(obj.getShepardId());
76      verify(session).query(URIReference.class, query, Collections.emptyMap());
77      assertEquals(List.of(ref), actual);
78    }
79  }