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