View Javadoc
1   package de.dlr.shepard.common.neo4j;
2   
3   import static org.junit.jupiter.api.Assertions.assertFalse;
4   import static org.junit.jupiter.api.Assertions.assertTrue;
5   import static org.mockito.Mockito.mock;
6   import static org.mockito.Mockito.when;
7   
8   import de.dlr.shepard.BaseTestCase;
9   import java.io.IOException;
10  import java.util.Collections;
11  import java.util.Iterator;
12  import java.util.Map;
13  import org.junit.jupiter.api.Test;
14  import org.mockito.InjectMocks;
15  import org.mockito.Mock;
16  import org.neo4j.ogm.exception.ConnectionException;
17  import org.neo4j.ogm.model.Result;
18  import org.neo4j.ogm.session.Session;
19  import org.neo4j.ogm.session.SessionFactory;
20  
21  public class NeoConnectorTest extends BaseTestCase {
22  
23    @Mock
24    private Session session;
25  
26    @Mock
27    private SessionFactory sessionFactory;
28  
29    @InjectMocks
30    private NeoConnector neoConnector;
31  
32    @Test
33    public void testAlive() {
34      var result = mock(Result.class);
35      @SuppressWarnings("unchecked")
36      Iterator<Map<String, Object>> iterator = mock(Iterator.class);
37      when(result.iterator()).thenReturn(iterator);
38      when(iterator.hasNext()).thenReturn(true);
39      when(iterator.next()).thenReturn(Map.of("count", 123));
40      when(sessionFactory.openSession()).thenReturn(session);
41      when(session.query("MATCH (n) RETURN count(*) as count", Collections.emptyMap())).thenReturn(result);
42  
43      var actual = neoConnector.alive();
44      assertTrue(actual);
45    }
46  
47    @Test
48    public void testAliveException() {
49      when(sessionFactory.openSession()).thenThrow(new ConnectionException("Exception", new IOException()));
50  
51      var actual = neoConnector.alive();
52      assertFalse(actual);
53    }
54  
55    @Test
56    public void testAliveEmpty() {
57      var result = mock(Result.class);
58      @SuppressWarnings("unchecked")
59      Iterator<Map<String, Object>> iterator = mock(Iterator.class);
60      when(result.iterator()).thenReturn(iterator);
61      when(iterator.hasNext()).thenReturn(false);
62      when(sessionFactory.openSession()).thenReturn(session);
63      when(session.query("MATCH (n) RETURN count(*) as count", Collections.emptyMap())).thenReturn(result);
64  
65      var actual = neoConnector.alive();
66      assertFalse(actual);
67    }
68  
69    @Test
70    public void testAliveWrong() {
71      var result = mock(Result.class);
72      @SuppressWarnings("unchecked")
73      Iterator<Map<String, Object>> iterator = mock(Iterator.class);
74      when(result.iterator()).thenReturn(iterator);
75      when(iterator.hasNext()).thenReturn(true);
76      when(iterator.next()).thenReturn(Map.of("test", 123));
77      when(sessionFactory.openSession()).thenReturn(session);
78      when(session.query("MATCH (n) RETURN count(*) as count", Collections.emptyMap())).thenReturn(result);
79  
80      var actual = neoConnector.alive();
81      assertFalse(actual);
82    }
83  }