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 }