menghaoranss commented on a change in pull request #10206:
URL: https://github.com/apache/shardingsphere/pull/10206#discussion_r621189515



##########
File path: 
shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/refresher/type/CreateTableStatementSchemaRefresherTest.java
##########
@@ -31,90 +36,79 @@
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateTableStatement;
 import org.junit.Test;
 
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 public final class CreateTableStatementSchemaRefresherTest {
     
+    private SchemaBuilderMaterials materials = 
mock(SchemaBuilderMaterials.class);
+    
     @Test
     public void refreshForMySQL() throws SQLException {
         MySQLCreateTableStatement createTableStatement = new 
MySQLCreateTableStatement();
         createTableStatement.setNotExisted(false);
+        when(materials.getDatabaseType()).thenReturn(new MySQLDatabaseType());
         refresh(createTableStatement);
     }
     
     @Test
     public void refreshForOracle() throws SQLException {
         OracleCreateTableStatement createTableStatement = new 
OracleCreateTableStatement();
+        when(materials.getDatabaseType()).thenReturn(new OracleDatabaseType());
         refresh(createTableStatement);
     }
     
     @Test
     public void refreshForPostgreSQL() throws SQLException {
         PostgreSQLCreateTableStatement createTableStatement = new 
PostgreSQLCreateTableStatement();
         createTableStatement.setNotExisted(false);
+        when(materials.getDatabaseType()).thenReturn(new 
PostgreSQLDatabaseType());
         refresh(createTableStatement);
     }
     
     @Test
     public void refreshForSQL92() throws SQLException {
         SQL92CreateTableStatement createTableStatement = new 
SQL92CreateTableStatement();
+        when(materials.getDatabaseType()).thenReturn(new SQL92DatabaseType());
         refresh(createTableStatement);
     }
     
     @Test
     public void refreshForSQLServer() throws SQLException {
         SQLServerCreateTableStatement createTableStatement = new 
SQLServerCreateTableStatement();
+        when(materials.getDatabaseType()).thenReturn(new 
SQLServerDatabaseType());
         refresh(createTableStatement);
     }
     
+    // TODO add more tests for tables with table rule
     private void refresh(final CreateTableStatement createTableStatement) 
throws SQLException {
-        ShardingSphereSchema schema = 
ShardingSphereSchemaBuildUtil.buildSchema();
         createTableStatement.setTable(new SimpleTableSegment(new 
TableNameSegment(1, 3, new IdentifierValue("t_order_0"))));
+        Map<String, DataSource> dataSourceMap = mock(HashMap.class);
+        when(materials.getDataSourceMap()).thenReturn(dataSourceMap);
+        DataSource dataSource = mock(DataSource.class);
+        when(dataSourceMap.get(eq("ds"))).thenReturn(dataSource);
+        Connection connection = mock(Connection.class);
+        when(dataSource.getConnection()).thenReturn(connection);
+        DatabaseMetaData metaData = mock(DatabaseMetaData.class);
+        when(connection.getMetaData()).thenReturn(metaData);
+        ResultSet resultSet = mock(ResultSet.class);
+        when(metaData.getTables(any(), any(), any(), 
any())).thenReturn(resultSet);
+        when(resultSet.next()).thenReturn(false);
+        ShardingSphereSchema schema = 
ShardingSphereSchemaBuildUtil.buildSchema();
         SchemaRefresher<CreateTableStatement> schemaRefresher = new 
CreateTableStatementSchemaRefresher();
-        SchemaBuilderMaterials materials = mock(SchemaBuilderMaterials.class);
         schemaRefresher.refresh(schema, Collections.singleton("ds"), 
createTableStatement, materials);
         assertTrue(schema.containsTable("t_order_0"));
     }
-    
-    @Test
-    public void refreshWithUnConfiguredForMySQL() throws SQLException {
-        MySQLCreateTableStatement createTableStatement = new 
MySQLCreateTableStatement();
-        createTableStatement.setNotExisted(false);
-        refreshWithUnConfigured(createTableStatement);
-    }
-    
-    @Test
-    public void refreshWithUnConfiguredForOracle() throws SQLException {
-        OracleCreateTableStatement createTableStatement = new 
OracleCreateTableStatement();
-        refreshWithUnConfigured(createTableStatement);
-    }
-    
-    @Test
-    public void refreshWithUnConfiguredForPostgreSQL() throws SQLException {
-        PostgreSQLCreateTableStatement createTableStatement = new 
PostgreSQLCreateTableStatement();
-        createTableStatement.setNotExisted(false);
-        refreshWithUnConfigured(createTableStatement);
-    }
-    
-    @Test
-    public void refreshWithUnConfiguredForSQL92() throws SQLException {
-        SQL92CreateTableStatement createTableStatement = new 
SQL92CreateTableStatement();
-        refreshWithUnConfigured(createTableStatement);
-    }
-    
-    @Test
-    public void refreshWithUnConfiguredForSQLServer() throws SQLException {
-        SQLServerCreateTableStatement createTableStatement = new 
SQLServerCreateTableStatement();

Review comment:
       Added.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to