@Test public void executes_handler() throws Exception { Oracle dialect = new Oracle(); when(underTest.getHandler(dialect)).thenReturn(handler); when(db.getDialect()).thenReturn(dialect); underTest.check(DatabaseCharsetChecker.State.UPGRADE); verify(handler).handle(any(Connection.class), eq(DatabaseCharsetChecker.State.UPGRADE)); }
@Override public void start() { DatabaseCharsetChecker.State state = DatabaseCharsetChecker.State.STARTUP; if (upgradeStatus.isUpgraded()) { state = DatabaseCharsetChecker.State.UPGRADE; } else if (upgradeStatus.isFreshInstall()) { state = DatabaseCharsetChecker.State.FRESH_INSTALL; } charsetChecker.check(state); }
public void check(State state) { try (Connection connection = db.getDataSource().getConnection()) { CharsetHandler handler = getHandler(db.getDialect()); if (handler != null) { handler.handle(connection, state); } } catch (SQLException e) { throw new IllegalStateException(e); } }
@Test public void test_upgrade() { when(upgradeStatus.isUpgraded()).thenReturn(true); underTest.start(); verify(charsetChecker).check(DatabaseCharsetChecker.State.UPGRADE); }
@Test public void getHandler_throws_IAE_if_unsupported_db() { Dialect unsupportedDialect = mock(Dialect.class); when(unsupportedDialect.getId()).thenReturn("foo"); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Database not supported: foo"); underTest.getHandler(unsupportedDialect); } }
@Test public void throws_ISE_if_handler_fails() throws Exception { Oracle dialect = new Oracle(); when(underTest.getHandler(dialect)).thenReturn(handler); when(db.getDialect()).thenReturn(dialect); doThrow(new SQLException("failure")).when(handler).handle(any(Connection.class), any(DatabaseCharsetChecker.State.class)); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("failure"); underTest.check(DatabaseCharsetChecker.State.UPGRADE); }
@Test public void test_fresh_install() { when(upgradeStatus.isFreshInstall()).thenReturn(true); underTest.start(); verify(charsetChecker).check(DatabaseCharsetChecker.State.FRESH_INSTALL); }
@Test public void getHandler_returns_MysqlCharsetHandler_if_mysql() { assertThat(underTest.getHandler(new MySql())).isInstanceOf(MysqlCharsetHandler.class); }
@Test public void test_regular_startup() { when(upgradeStatus.isFreshInstall()).thenReturn(false); underTest.start(); verify(charsetChecker).check(DatabaseCharsetChecker.State.STARTUP); } }
@Test public void getHandler_returns_PostgresCharsetHandler_if_postgres() { assertThat(underTest.getHandler(new PostgreSql())).isInstanceOf(PostgresCharsetHandler.class); }
@Override public void start() { DatabaseCharsetChecker.State state = DatabaseCharsetChecker.State.STARTUP; if (upgradeStatus.isUpgraded()) { state = DatabaseCharsetChecker.State.UPGRADE; } else if (upgradeStatus.isFreshInstall()) { state = DatabaseCharsetChecker.State.FRESH_INSTALL; } charsetChecker.check(state); }
@Test public void getHandler_returns_MssqlCharsetHandler_if_mssql() { assertThat(underTest.getHandler(new MsSql())).isInstanceOf(MssqlCharsetHandler.class); }
@Test public void getHandler_returns_OracleCharsetHandler_if_oracle() { assertThat(underTest.getHandler(new Oracle())).isInstanceOf(OracleCharsetHandler.class); }
@Test public void does_nothing_if_h2() { assertThat(underTest.getHandler(new H2())).isNull(); }
public void check(State state) { try (Connection connection = db.getDataSource().getConnection()) { CharsetHandler handler = getHandler(db.getDialect()); if (handler != null) { handler.handle(connection, state); } } catch (SQLException e) { throw new IllegalStateException(e); } }