package eu.dnetlib.enabling.database;

import static org.junit.Assert.*;


import java.sql.SQLException;

import javax.sql.DataSource;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnit44Runner;

@RunWith(MockitoJUnit44Runner.class)
public class DataSourceFactoryImplTest {
	
	// Class under test
	private DataSourceFactoryImpl factory;
	
	@Before
	public void setUp() throws Exception {
		factory = new DataSourceFactoryImpl();
		factory.setBaseUrl("jdbc:postgresql://localhost:5432");
		factory.setDriverClassName("org.postgresql.Driver");
		factory.setUsername("dnet");
		factory.setPassword("dnetPwd");
	}

	@Test
	public void testCreateDataSource_1() throws SQLException {
		DataSource ds = factory.createDataSource("");
		assertNotNull(ds);
		assertNotNull(ds.getConnection());
	}
	@Test
	public void testCreateDataSource_2() throws SQLException {
		DataSource ds = factory.createDataSource("postgres");
		assertNotNull(ds);
		assertNotNull(ds.getConnection());
	}
	
	@Test(expected=SQLException.class)
	public void testCreateDataSource_error() throws SQLException {
		DataSource ds = factory.createDataSource("_INVALID_DATABASE_");
		assertNotNull(ds);
		assertNotNull(ds.getConnection());
	}
}
