1 package de.dlr.shepard.context.semantic.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.common.util.QueryParamHelper;
9 import de.dlr.shepard.context.semantic.endpoints.SemanticRepositoryAttributes;
10 import de.dlr.shepard.context.semantic.entities.SemanticRepository;
11 import java.util.Collections;
12 import java.util.List;
13 import java.util.Map;
14 import org.junit.jupiter.api.Test;
15 import org.mockito.InjectMocks;
16 import org.mockito.Mock;
17 import org.neo4j.ogm.session.Session;
18
19 public class SemanticRepositoryDAOTest extends BaseTestCase {
20
21 @Mock
22 private Session session;
23
24 @InjectMocks
25 private SemanticRepositoryDAO dao;
26
27 @Test
28 public void getEntityTypeTest() {
29 var type = dao.getEntityType();
30 assertEquals(SemanticRepository.class, type);
31 }
32
33 @Test
34 public void findAllSemanticRepositoriesTest_Pagination() {
35 QueryParamHelper params = new QueryParamHelper()
36 .withName("name")
37 .withPageAndSize(2, 10)
38 .withOrderByAttribute(SemanticRepositoryAttributes.name, true);
39 Map<String, Object> paramsMap = Map.of("name", "name", "offset", 20, "size", 10);
40 var repo = new SemanticRepository(1L);
41 repo.setName("Name");
42 var wrongRepo = new SemanticRepository(1L);
43 wrongRepo.setName("Wrong");
44 var query =
45 """
46 MATCH (r:SemanticRepository { name : $name, deleted: FALSE }) WITH r \
47 ORDER BY toLower(r.name) DESC SKIP $offset LIMIT $size \
48 MATCH path=(r)-[*0..1]-(n) WHERE n.deleted = FALSE OR n.deleted IS NULL RETURN r, nodes(path), relationships(path)""";
49 when(session.query(SemanticRepository.class, query, paramsMap)).thenReturn(List.of(repo, wrongRepo));
50 var actual = dao.findAllSemanticRepositories(params);
51 assertEquals(List.of(repo), actual);
52 }
53
54 @Test
55 public void findAllSemanticRepositoriesTest_NoPagination() {
56 var repo = new SemanticRepository(1L);
57 Map<String, Object> paramsMap = Collections.emptyMap();
58 var query =
59 """
60 MATCH (r:SemanticRepository { deleted: FALSE }) WITH r \
61 MATCH path=(r)-[*0..1]-(n) WHERE n.deleted = FALSE OR n.deleted IS NULL RETURN r, nodes(path), relationships(path)""";
62 when(session.query(SemanticRepository.class, query, paramsMap)).thenReturn(List.of(repo));
63 QueryParamHelper params = new QueryParamHelper();
64 var actual = dao.findAllSemanticRepositories(params);
65 verify(session).query(SemanticRepository.class, query, paramsMap);
66 assertEquals(List.of(repo), actual);
67 }
68 }