1
|
package eu.dnetlib.enabling.database;
|
2
|
|
3
|
import static org.junit.Assert.assertEquals;
|
4
|
import static org.junit.Assert.assertFalse;
|
5
|
import static org.junit.Assert.assertTrue;
|
6
|
import static org.mockito.Mockito.verify;
|
7
|
import static org.mockito.Mockito.when;
|
8
|
|
9
|
import java.util.Arrays;
|
10
|
import java.util.Date;
|
11
|
import java.util.HashMap;
|
12
|
import java.util.List;
|
13
|
import java.util.Map;
|
14
|
|
15
|
import org.junit.Before;
|
16
|
import org.junit.Ignore;
|
17
|
import org.junit.Test;
|
18
|
import org.junit.runner.RunWith;
|
19
|
import org.mockito.Mock;
|
20
|
import org.mockito.runners.MockitoJUnitRunner;
|
21
|
|
22
|
import eu.dnetlib.enabling.database.objects.DnetDatabase;
|
23
|
import eu.dnetlib.enabling.database.resultset.SQLResultSetListenerFactory;
|
24
|
import eu.dnetlib.enabling.database.utils.DatabaseUtils;
|
25
|
import eu.dnetlib.enabling.database.utils.GenericRow;
|
26
|
import eu.dnetlib.enabling.resultset.ResultSetFactory;
|
27
|
import eu.dnetlib.enabling.resultset.ResultSetListener;
|
28
|
|
29
|
@RunWith(MockitoJUnitRunner.class)
|
30
|
public class DatabaseServiceCoreTest {
|
31
|
|
32
|
private static final String DB_NAME = "cinema";
|
33
|
private static final String TABLE_NAME = "films";
|
34
|
private static final String TABLE_WHERE = "year=1980";
|
35
|
private static final Date TABLE_FROM = new Date(100000);
|
36
|
private static final Date TABLE_UNTIL = new Date(200000);
|
37
|
private static final String SQL = "SELECT * from films";
|
38
|
|
39
|
// Class under test
|
40
|
private DatabaseServiceCore core;
|
41
|
|
42
|
@Mock
|
43
|
private DatabaseUtils dbUtils;
|
44
|
|
45
|
@Mock
|
46
|
private ResultSetFactory resultSetFactory;
|
47
|
@Mock
|
48
|
private SQLResultSetListenerFactory resultSetListenerFactory;
|
49
|
@Mock
|
50
|
private ResultSetListener listener_where;
|
51
|
@Mock
|
52
|
private ResultSetListener listener_from_until;
|
53
|
@Mock
|
54
|
private ResultSetListener listener_sql;
|
55
|
@Mock
|
56
|
private GenericRow ROW;
|
57
|
|
58
|
private final Map<String, Object> ROW_FIELDS = new HashMap<String, Object>();
|
59
|
|
60
|
@Before
|
61
|
public void setUp() throws Exception {
|
62
|
core = new DatabaseServiceCore();
|
63
|
core.setDbUtils(dbUtils);
|
64
|
|
65
|
core.setResultSetFactory(resultSetFactory);
|
66
|
core.setResultSetListenerFactory(resultSetListenerFactory);
|
67
|
|
68
|
ROW_FIELDS.put("name", "Pippo");
|
69
|
ROW_FIELDS.put("age", 36);
|
70
|
|
71
|
when(dbUtils.listCommonDBTables(DB_NAME)).thenReturn(Arrays.asList("T1", "T2", "T3"));;
|
72
|
|
73
|
when(resultSetListenerFactory.createCondTableListener(DB_NAME, TABLE_NAME, TABLE_WHERE)).thenReturn(listener_where);
|
74
|
when(resultSetListenerFactory.createLoggedTableListener(DB_NAME, TABLE_NAME, TABLE_FROM, TABLE_UNTIL)).thenReturn(listener_from_until);
|
75
|
when(resultSetListenerFactory.createSQLListener(DB_NAME, SQL)).thenReturn(listener_sql);
|
76
|
|
77
|
//when(ROW.getTable()).thenReturn(TABLE_NAME);
|
78
|
//when(ROW.getFields()).thenReturn(ROW_FIELDS);
|
79
|
}
|
80
|
|
81
|
@Ignore
|
82
|
@Test
|
83
|
public void testListDatabases() throws Exception {
|
84
|
List<DnetDatabase> list = core.listDatabases();
|
85
|
verify(dbUtils).listAllDatabases();
|
86
|
assertEquals("List size invalid", 5, list.size());
|
87
|
|
88
|
for (DnetDatabase db : list) {
|
89
|
if (db.getDbName().startsWith("M")) {
|
90
|
assertTrue("Db should be managed", db.isManaged());
|
91
|
} else {
|
92
|
assertFalse("Db should be not managed", db.isManaged());
|
93
|
}
|
94
|
}
|
95
|
|
96
|
}
|
97
|
|
98
|
@Test
|
99
|
public void testChangeDatabaseStatus_manage() throws Exception {
|
100
|
core.changeDatabaseStatus(DB_NAME, true);
|
101
|
verify(dbUtils).listCommonDBTables(DB_NAME);
|
102
|
verify(dbUtils).setManaged(DB_NAME, true);
|
103
|
}
|
104
|
|
105
|
@Test
|
106
|
public void testChangeDatabaseStatus_unmanage() throws Exception {
|
107
|
core.changeDatabaseStatus(DB_NAME, false);
|
108
|
verify(dbUtils).listCommonDBTables(DB_NAME);
|
109
|
verify(dbUtils).setManaged(DB_NAME, false);
|
110
|
}
|
111
|
|
112
|
@Test
|
113
|
public void testGenerateResultSet_1() throws Exception {
|
114
|
core.generateResultSet(DB_NAME, SQL);
|
115
|
verify(resultSetFactory).createResultSet(listener_sql);
|
116
|
}
|
117
|
|
118
|
@Test
|
119
|
public void testGenerateResultSet_2() throws Exception {
|
120
|
core.generateResultSet(DB_NAME, TABLE_NAME, TABLE_WHERE);
|
121
|
verify(resultSetFactory).createResultSet(listener_where);
|
122
|
}
|
123
|
|
124
|
@Test
|
125
|
public void testGenerateResultSet_3() throws Exception {
|
126
|
core.generateResultSet(DB_NAME, TABLE_NAME, TABLE_FROM, TABLE_UNTIL);
|
127
|
verify(resultSetFactory).createResultSet(listener_from_until);
|
128
|
}
|
129
|
|
130
|
}
|