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