1 package de.dlr.shepard.context.references.file.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.file.entities.FileReference;
10 import de.dlr.shepard.data.file.entities.FileContainer;
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 FileReferenceDAOTest extends BaseTestCase {
19
20 @Mock
21 private Session session;
22
23 @InjectMocks
24 private FileReferenceDAO dao;
25
26 @Test
27 public void getEntityTypeTest() {
28 var type = dao.getEntityType();
29 assertEquals(FileReference.class, type);
30 }
31
32 @Test
33 public void findByDataObjectTest() {
34 var obj = new DataObject(1L);
35 var obj2 = new DataObject(100L);
36 var con = new FileContainer(200L);
37 var ref = new FileReference() {
38 {
39 setId(2L);
40 setFileContainer(con);
41 setDataObject(obj);
42 }
43 };
44 var ref2 = new FileReference() {
45 {
46 setId(3L);
47 setFileContainer(con);
48 setDataObject(obj2);
49 }
50 };
51 var ref3 = new FileReference() {
52 {
53 setId(3L);
54 setFileContainer(con);
55 }
56 };
57
58 var query =
59 """
60 MATCH (d:DataObject)-[hr:has_reference]->(r:FileReference { deleted: FALSE }) WHERE ID(d)=1 \
61 MATCH path=(r)-[*0..1]-(n) WHERE n.deleted = FALSE OR n.deleted IS NULL \
62 RETURN r, nodes(path), relationships(path)""";
63 when(session.query(FileReference.class, query, Collections.emptyMap())).thenReturn(List.of(ref, ref2, ref3));
64
65 var actual = dao.findByDataObjectNeo4jId(1L);
66 verify(session).query(FileReference.class, query, Collections.emptyMap());
67 assertEquals(List.of(ref), actual);
68 }
69
70 @Test
71 public void findByDataObjectShepardIdTest() {
72 var obj = new DataObject(1L);
73 obj.setShepardId(11L);
74 var obj2 = new DataObject(100L);
75 obj2.setShepardId(1001L);
76 var con = new FileContainer(200L);
77 var ref = new FileReference() {
78 {
79 setId(2L);
80 setShepardId(21L);
81 setFileContainer(con);
82 setDataObject(obj);
83 }
84 };
85 var ref2 = new FileReference() {
86 {
87 setId(3L);
88 setShepardId(31L);
89 setFileContainer(con);
90 setDataObject(obj2);
91 }
92 };
93 var ref3 = new FileReference() {
94 {
95 setId(3L);
96 setShepardId(31L);
97 setFileContainer(con);
98 }
99 };
100
101 String query =
102 "MATCH (d:DataObject)-[hr:has_reference]->(r:FileReference { 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)";
103 when(session.query(FileReference.class, query, Collections.emptyMap())).thenReturn(List.of(ref, ref2, ref3));
104
105 var actual = dao.findByDataObjectShepardId(obj.getShepardId());
106 verify(session).query(FileReference.class, query, Collections.emptyMap());
107 assertEquals(List.of(ref), actual);
108 }
109 }