Skip to content

Commit

Permalink
@nvoxland review
Browse files Browse the repository at this point in the history
  • Loading branch information
zorglube committed Jul 7, 2022
1 parent bf49ebe commit cbd6627
Show file tree
Hide file tree
Showing 10 changed files with 154 additions and 170 deletions.
@@ -1,22 +1,21 @@
package liquibase.database;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import liquibase.Scope;
import liquibase.change.core.CreateTableChange;
import liquibase.exception.DatabaseException;
import liquibase.executor.ExecutorService;
import liquibase.sdk.executor.MockExecutor;
import liquibase.sql.visitor.AppendSqlVisitor;
import liquibase.sql.visitor.SqlVisitor;
import liquibase.statement.SqlStatement;
import liquibase.statement.core.DropTableStatement;
import liquibase.structure.core.Table;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;

/**
* Base test class for database-specific tests
Expand Down Expand Up @@ -88,14 +87,14 @@ public void defaultsWorkWithoutAConnection() {
// }

@Test
public void escapeTableName_noSchema() {
Database database = getDatabase();
public void escapeTableName_noSchema() throws DatabaseException {
final Database database = getDatabase();
assertEquals("tableName", database.escapeTableName(null, null, "tableName"));
}

@Test
public void escapeTableName_withSchema() {
Database database = getDatabase();
public void escapeTableName_withSchema() throws DatabaseException {
final Database database = getDatabase();
if (database.supportsCatalogInObjectName(Table.class)) {
assertEquals("catalogName.schemaName.tableName", database.escapeTableName("catalogName", "schemaName", "tableName"));
} else {
Expand Down Expand Up @@ -283,7 +282,7 @@ public void test_escapeObjectName() {
assertTrue(tableName.matches("[\\[\\\"`]?My Table [\\]\\\"`]?"));

tableName = database.escapeObjectName("MyTable", Table.class);
assertTrue(tableName.equals("MyTable"));
assertEquals("MyTable", tableName);

tableName = database.escapeObjectName("My Table", Table.class);
assertTrue(tableName.matches("[\\[\\\"`]?My Table[\\]\\\"`]?"));
Expand Down
Expand Up @@ -4,15 +4,16 @@
import liquibase.exception.DatabaseException;

public class AbstractDb2DatabaseTest extends TestCase {
public void testGetDateLiteral() {
try (AbstractDb2Database database = new DB2Database()) {
assertEquals("DATE('2018-12-31')", database.getDateLiteral("2018-12-31"));
assertEquals("TIME('23:58:59')", database.getDateLiteral("23:58:59"));
assertEquals("TIMESTAMP('2018-12-31 23:58:59')", database.getDateLiteral("2018-12-31 23:58:59"));
assertEquals("UNSUPPORTED:foo", database.getDateLiteral("foo"));
} catch (DatabaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

public void testGetDateLiteral() throws DatabaseException {
try (AbstractDb2Database database = new DB2Database()) {
assertEquals("DATE('2018-12-31')", database.getDateLiteral("2018-12-31"));
assertEquals("TIME('23:58:59')", database.getDateLiteral("23:58:59"));
assertEquals("TIMESTAMP('2018-12-31 23:58:59')", database.getDateLiteral("2018-12-31 23:58:59"));
assertEquals("UNSUPPORTED:foo", database.getDateLiteral("foo"));
} catch (final DatabaseException e) {
throw e;
}
}

}
Expand Up @@ -5,16 +5,15 @@
import liquibase.exception.DatabaseException;

public class DB2DatabaseTest extends TestCase {
public void testGetDefaultDriver() {
try (Database database = new DB2Database()) {
assertEquals("com.ibm.db2.jcc.DB2Driver", database.getDefaultDriver("jdbc:db2://localhost:50000/liquibas"));

assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
} catch (DatabaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testGetDefaultDriver() throws DatabaseException {
try (Database database = new DB2Database()) {
assertEquals("com.ibm.db2.jcc.DB2Driver", database.getDefaultDriver("jdbc:db2://localhost:50000/liquibas"));

assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
} catch (final DatabaseException e) {
throw e;
}
}

}
Expand Up @@ -5,16 +5,15 @@
import liquibase.exception.DatabaseException;

public class DB2zDatabaseTest extends TestCase {
public void testGetDefaultDriver() {
try (Database database = new Db2zDatabase()) {
assertEquals("com.ibm.db2.jcc.DB2Driver", database.getDefaultDriver("jdbc:db2://localhost:50000/liquibas"));

assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
} catch (DatabaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testGetDefaultDriver() throws DatabaseException {
try (Database database = new Db2zDatabase()) {
assertEquals("com.ibm.db2.jcc.DB2Driver", database.getDefaultDriver("jdbc:db2://localhost:50000/liquibas"));

assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
} catch (final DatabaseException e) {
throw e;
}
}

}
Expand Up @@ -17,59 +17,59 @@
import liquibase.exception.DatabaseException;

public class DerbyDatabaseTest extends TestCase {
public void testGetDefaultDriver() {
try (Database database = new DerbyDatabase()) {
assertEquals("org.apache.derby.jdbc.EmbeddedDriver", database.getDefaultDriver("java:derby:liquibase;create=true"));

assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
} catch (DatabaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testGetDefaultDriver() throws DatabaseException {
try (Database database = new DerbyDatabase()) {
assertEquals("org.apache.derby.jdbc.EmbeddedDriver", database.getDefaultDriver("java:derby:liquibase;create=true"));

public void testGetDateLiteral() {
assertEquals("TIMESTAMP('2008-01-25 13:57:41')", new DerbyDatabase().getDateLiteral("2008-01-25 13:57:41"));
assertEquals("TIMESTAMP('2008-01-25 13:57:41.300000')", new DerbyDatabase().getDateLiteral("2008-01-25 13:57:41.3"));
assertEquals("TIMESTAMP('2008-01-25 13:57:41.340000')", new DerbyDatabase().getDateLiteral("2008-01-25 13:57:41.34"));
assertEquals("TIMESTAMP('2008-01-25 13:57:41.347000')", new DerbyDatabase().getDateLiteral("2008-01-25 13:57:41.347"));
assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
} catch (final DatabaseException e) {
throw e;
}
}

public void testCloseShutsEmbeddedDerbyDown() throws Exception {
Connection con = mockConnection();
DerbyDatabase database = spyDatabase(con);
public void testGetDateLiteral() {
assertEquals("TIMESTAMP('2008-01-25 13:57:41')", new DerbyDatabase().getDateLiteral("2008-01-25 13:57:41"));
assertEquals("TIMESTAMP('2008-01-25 13:57:41.300000')", new DerbyDatabase().getDateLiteral("2008-01-25 13:57:41.3"));
assertEquals("TIMESTAMP('2008-01-25 13:57:41.340000')", new DerbyDatabase().getDateLiteral("2008-01-25 13:57:41.34"));
assertEquals("TIMESTAMP('2008-01-25 13:57:41.347000')", new DerbyDatabase().getDateLiteral("2008-01-25 13:57:41.347"));
}

database.close();
public void testCloseShutsEmbeddedDerbyDown() throws Exception {
Connection con = mockConnection();
DerbyDatabase database = spyDatabase(con);

verify(database).shutdownDerby(anyString(), anyString());
verify(con).close();
}
database.close();

public void testCloseDoesNotShutEmbeddedDerbyDown() throws Exception {
Connection con = mockConnection();
DerbyDatabase database = spyDatabase(con);
database.setShutdownEmbeddedDerby(false);
verify(database).shutdownDerby(anyString(), anyString());
verify(con).close();
}

database.close();
public void testCloseDoesNotShutEmbeddedDerbyDown() throws Exception {
Connection con = mockConnection();
DerbyDatabase database = spyDatabase(con);
database.setShutdownEmbeddedDerby(false);

verify(database, never()).shutdownDerby(anyString(), anyString());
verify(con).close();
}
database.close();

private static DerbyDatabase spyDatabase(Connection con) throws DatabaseException {
DerbyDatabase database = spy(new DerbyDatabase());
doNothing().when(database).shutdownDerby(anyString(), anyString());
database.setConnection(new JdbcConnection(con));
return database;
}
verify(database, never()).shutdownDerby(anyString(), anyString());
verify(con).close();
}

private static Connection mockConnection() throws SQLException {
Connection con = mock(Connection.class);
DatabaseMetaData metaData = mock(DatabaseMetaData.class, RETURNS_SMART_NULLS);
when(metaData.getURL()).thenReturn("jdbc:derby:memory:foo");
when(metaData.getDriverName()).thenReturn("org.apache.derby.jdbc.EmbeddedDriver");
when(con.getMetaData()).thenReturn(metaData);
return con;
}
private static DerbyDatabase spyDatabase(Connection con) throws DatabaseException {
DerbyDatabase database = spy(new DerbyDatabase());
doNothing().when(database).shutdownDerby(anyString(), anyString());
database.setConnection(new JdbcConnection(con));
return database;
}

private static Connection mockConnection() throws SQLException {
Connection con = mock(Connection.class);
DatabaseMetaData metaData = mock(DatabaseMetaData.class, RETURNS_SMART_NULLS);
when(metaData.getURL()).thenReturn("jdbc:derby:memory:foo");
when(metaData.getDriverName()).thenReturn("org.apache.derby.jdbc.EmbeddedDriver");
when(con.getMetaData()).thenReturn(metaData);
return con;
}

}
Expand Up @@ -24,7 +24,6 @@ protected String getProductNameString() {
return "Microsoft SQL Server";
}


@Override
@Test
public void supportsInitiallyDeferrableColumns() {
Expand All @@ -38,40 +37,38 @@ public void getCurrentDateTimeFunction() {
}

@Test
public void getDefaultDriver() {
public void getDefaultDriver() throws DatabaseException {
try (Database database = new MSSQLDatabase()) {
assertEquals("com.microsoft.sqlserver.jdbc.SQLServerDriver", database.getDefaultDriver("jdbc:sqlserver://localhost;databaseName=liquibase"));

assertNull(database.getDefaultDriver("jdbc:oracle:thin://localhost;databaseName=liquibase"));
} catch (DatabaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
assertEquals("com.microsoft.sqlserver.jdbc.SQLServerDriver", database.getDefaultDriver("jdbc:sqlserver://localhost;databaseName=liquibase"));

assertNull(database.getDefaultDriver("jdbc:oracle:thin://localhost;databaseName=liquibase"));
} catch (final DatabaseException e) {
throw e;
}
}

@Override
@Test
public void escapeTableName_noSchema() {
public void escapeTableName_noSchema() throws DatabaseException {
try (Database database = new MSSQLDatabase()) {
assertEquals("tableName", database.escapeTableName(null, null, "tableName"));
assertEquals("[tableName€]", database.escapeTableName(null, null, "tableName€"));
} catch (DatabaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
assertEquals("tableName", database.escapeTableName(null, null, "tableName"));
assertEquals("[tableName€]", database.escapeTableName(null, null, "tableName€"));
} catch (final DatabaseException e) {
throw e;
}
}

@Override
@Test
public void escapeTableName_withSchema() {
public void escapeTableName_withSchema() throws DatabaseException {
try (Database database = new MSSQLDatabase()) {
assertEquals("catalogName.schemaName.tableName", database.escapeTableName("catalogName", "schemaName", "tableName"));
assertEquals("[catalogName€].[schemaName€].[tableName€]", database.escapeTableName("catalogName€", "schemaName€", "tableName€"));
} catch (DatabaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
assertEquals("catalogName.schemaName.tableName", database.escapeTableName("catalogName", "schemaName", "tableName"));
assertEquals("[catalogName€].[schemaName€].[tableName€]", database.escapeTableName("catalogName€", "schemaName€", "tableName€"));
} catch (final DatabaseException e) {
throw e;
}
}

private Database createOfflineDatabase(String url) throws Exception {
return DatabaseFactory.getInstance().openDatabase(url, null, null, null, null);
}
Expand All @@ -81,15 +78,15 @@ public void setDefaultSchemaName() throws Exception {
//
// No exception should be thrown by call to setDefaultSchemaName
//
Database database = createOfflineDatabase("offline:mssql");
final Database database = createOfflineDatabase("offline:mssql");
database.setDefaultSchemaName("MySchema");
}

@Test
public void isUnmodifiable() throws Exception {
Database database = createOfflineDatabase("offline:mssql");
final Database database = createOfflineDatabase("offline:mssql");
assertTrue(database instanceof MSSQLDatabase);
MSSQLDatabase mssqlDatabase = (MSSQLDatabase)database;
final MSSQLDatabase mssqlDatabase = (MSSQLDatabase) database;
assertTrue(mssqlDatabase.dataTypeIsNotModifiable("datetime"));
}

Expand Down

0 comments on commit cbd6627

Please sign in to comment.