Project

General

Profile

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
}
(2-2/3)