package com.vladmihalcea.flexypool.util;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import javax.naming.NameNotFoundException;
import javax.sql.DataSource;
import java.io.PrintWriter;
import java.sql.SQLException;
import static org.junit.Assert.*;
import static org.mockito.Mockito.when;
/**
* LazyJndiResolverTest - LazyJndiResolver Test
*
* @author Vlad Mihalcea
*/
public class LazyJndiResolverTest extends AbstractUtilsTest<LazyJndiResolver> {
private JndiTestUtils jndiTestUtils;
@Before
public void init() {
jndiTestUtils = new JndiTestUtils();
}
@Test
public void testLazyLookupFailure() {
DataSource dataSource = LazyJndiResolver.newInstance("jdbc/DS", DataSource.class);
try {
dataSource.getLogWriter();
} catch (Exception e) {
assertEquals(NameNotFoundException.class, e.getCause().getClass());
}
}
@Test
public void testLazyLookup() {
jndiTestUtils.namingContext().bind("jdbc/DS", Mockito.mock(DataSource.class));
DataSource dataSource = LazyJndiResolver.newInstance("jdbc/DS", DataSource.class);
try {
PrintWriter printWriter = new PrintWriter(System.out);
when(dataSource.getLogWriter()).thenReturn(printWriter);
assertSame(printWriter, dataSource.getLogWriter());
} catch (SQLException e) {
fail("There should be no exception thrown!");
}
}
@Override
protected Class<LazyJndiResolver> getUtilsClass() {
return LazyJndiResolver.class;
}
}