You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/03/19 11:49:44 UTC

[shardingsphere] branch master updated: Revise InsertClauseShardingConditionEngineTest (#16212)

This is an automated email from the ASF dual-hosted git repository.

panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new e8e3814  Revise InsertClauseShardingConditionEngineTest (#16212)
e8e3814 is described below

commit e8e381450a94454fa20109e71025e6a87600feaf
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sat Mar 19 19:47:39 2022 +0800

    Revise InsertClauseShardingConditionEngineTest (#16212)
---
 .../InsertClauseShardingConditionEngineTest.java   | 102 +++++++++------------
 1 file changed, 45 insertions(+), 57 deletions(-)

diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngineTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngineTest.java
index 0c6df38..a198f9d 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngineTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngineTest.java
@@ -21,104 +21,92 @@ import org.apache.shardingsphere.infra.binder.segment.insert.keygen.GeneratedKey
 import org.apache.shardingsphere.infra.binder.segment.insert.values.InsertSelectContext;
 import org.apache.shardingsphere.infra.binder.segment.insert.values.InsertValueContext;
 import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
 import org.apache.shardingsphere.sharding.route.engine.condition.ShardingCondition;
 import org.apache.shardingsphere.sharding.route.engine.condition.engine.impl.InsertClauseShardingConditionEngine;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
-import org.apache.shardingsphere.sharding.rule.TableRule;
-import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
-import java.util.ArrayList;
-import java.util.Arrays;
+
+import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.mockito.ArgumentMatchers.eq;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
 public final class InsertClauseShardingConditionEngineTest {
-
-    private InsertClauseShardingConditionEngine insertClauseShardingConditionEngine;
-
+    
+    private final InsertClauseShardingConditionEngine insertClauseShardingConditionEngine = new InsertClauseShardingConditionEngine(mock(ShardingRule.class), mock(ShardingSphereSchema.class));
+    
+    @Mock
     private InsertStatementContext insertStatementContext;
-
-    private ShardingRule shardingRule;
-
+    
     @Before
     public void setUp() {
-        insertStatementContext = mock(InsertStatementContext.class);
-        shardingRule = mock(ShardingRule.class);
-        InsertStatement insertStatement = mock(InsertStatement.class);
+        InsertStatement insertStatement = mockInsertStatement();
         when(insertStatementContext.getSqlStatement()).thenReturn(insertStatement);
-        when(insertStatementContext.getColumnNames()).thenReturn(Arrays.asList(new String[]{"columnName"}));
-        SimpleTableSegment simpleTableSegment = mock(SimpleTableSegment.class);
-        when(insertStatement.getTable()).thenReturn(simpleTableSegment);
-        TableNameSegment tableNameSegment = mock(TableNameSegment.class);
-        when(simpleTableSegment.getTableName()).thenReturn(tableNameSegment);
-        IdentifierValue identifierValue = mock(IdentifierValue.class);
-        when(tableNameSegment.getIdentifier()).thenReturn(identifierValue);
-        when(identifierValue.getValue()).thenReturn("example");
-        List<ExpressionSegment> valueExpressions = new ArrayList<>();
-        valueExpressions.add(new LiteralExpressionSegment(0, 10, "1"));
-        when(insertStatementContext.getInsertValueContexts()).thenReturn(Arrays.asList(new InsertValueContext[]{new InsertValueContext(valueExpressions, new ArrayList<>(), 0)}));
-        when(insertStatementContext.getGeneratedKeyContext()).thenReturn(Optional.of(new GeneratedKeyContext("columnNameTwo", true)));
-        ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
-        insertClauseShardingConditionEngine = new InsertClauseShardingConditionEngine(shardingRule, metaData.getSchema());
+        when(insertStatementContext.getColumnNames()).thenReturn(Collections.singletonList("foo_col"));
+        when(insertStatementContext.getInsertValueContexts()).thenReturn(Collections.singletonList(createInsertValueContext()));
     }
-
+    
+    private InsertStatement mockInsertStatement() {
+        InsertStatement result = mock(InsertStatement.class);
+        when(result.getTable()).thenReturn(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("foo_table"))));
+        return result;
+    }
+    
+    private InsertValueContext createInsertValueContext() {
+        return new InsertValueContext(Collections.singleton(new LiteralExpressionSegment(0, 10, "1")), Collections.emptyList(), 0);
+    }
+    
     @Test
     public void assertCreateShardingConditionsInsertStatement() {
         when(insertStatementContext.getGeneratedKeyContext()).thenReturn(Optional.empty());
-        List<ShardingCondition> shardingConditionList = insertClauseShardingConditionEngine.createShardingConditions(insertStatementContext, new ArrayList<>());
-        Assert.assertFalse(shardingConditionList.isEmpty());
-        Assert.assertThat(shardingConditionList.get(0).getStartIndex(), is(0));
-        Assert.assertTrue(shardingConditionList.get(0).getValues().isEmpty());
+        List<ShardingCondition> shardingConditions = insertClauseShardingConditionEngine.createShardingConditions(insertStatementContext, Collections.emptyList());
+        assertThat(shardingConditions.get(0).getStartIndex(), is(0));
+        assertTrue(shardingConditions.get(0).getValues().isEmpty());
     }
-
+    
     @Test
     public void assertCreateShardingConditionsInsertStatementWithGeneratedKeyContext() {
-        List<ShardingCondition> shardingConditionList = insertClauseShardingConditionEngine.createShardingConditions(insertStatementContext, new ArrayList<>());
-        Assert.assertFalse(shardingConditionList.isEmpty());
-        Assert.assertThat(shardingConditionList.get(0).getStartIndex(), is(0));
-        Assert.assertTrue(shardingConditionList.get(0).getValues().isEmpty());
+        when(insertStatementContext.getGeneratedKeyContext()).thenReturn(Optional.of(mock(GeneratedKeyContext.class)));
+        List<ShardingCondition> shardingConditions = insertClauseShardingConditionEngine.createShardingConditions(insertStatementContext, Collections.emptyList());
+        assertThat(shardingConditions.get(0).getStartIndex(), is(0));
+        assertTrue(shardingConditions.get(0).getValues().isEmpty());
     }
-
+    
     @Test
     public void assertCreateShardingConditionsInsertStatementWithGeneratedKeyContextAndTableRule() {
-        when(shardingRule.findTableRule(eq("example"))).thenReturn(Optional.of(new TableRule(new ArrayList<>(), "logicTableName")));
-        List<ShardingCondition> shardingConditionList = insertClauseShardingConditionEngine.createShardingConditions(insertStatementContext, new ArrayList<>());
-        Assert.assertFalse(shardingConditionList.isEmpty());
-        Assert.assertThat(shardingConditionList.get(0).getStartIndex(), is(0));
-        Assert.assertTrue(shardingConditionList.get(0).getValues().isEmpty());
+        when(insertStatementContext.getGeneratedKeyContext()).thenReturn(Optional.of(mock(GeneratedKeyContext.class)));
+        List<ShardingCondition> shardingConditions = insertClauseShardingConditionEngine.createShardingConditions(insertStatementContext, Collections.emptyList());
+        assertThat(shardingConditions.get(0).getStartIndex(), is(0));
+        assertTrue(shardingConditions.get(0).getValues().isEmpty());
     }
-
+    
     @Test
     public void assertCreateShardingConditionsSelectStatement() {
         when(insertStatementContext.getGeneratedKeyContext()).thenReturn(Optional.empty());
-        InsertSelectContext insertStatement = mock(InsertSelectContext.class);
-        when(insertStatementContext.getInsertSelectContext()).thenReturn(insertStatement);
-        List<ShardingCondition> shardingConditionList = insertClauseShardingConditionEngine.createShardingConditions(insertStatementContext, new ArrayList<>());
-        Assert.assertTrue(shardingConditionList.isEmpty());
+        when(insertStatementContext.getInsertSelectContext()).thenReturn(mock(InsertSelectContext.class));
+        assertTrue(insertClauseShardingConditionEngine.createShardingConditions(insertStatementContext, Collections.emptyList()).isEmpty());
     }
-
+    
     @Test
     public void assertCreateShardingConditionsSelectStatementWithGeneratedKeyContext() {
-        InsertSelectContext insertStatement = mock(InsertSelectContext.class);
-        when(insertStatementContext.getInsertSelectContext()).thenReturn(insertStatement);
-        List<ShardingCondition> shardingConditionList = insertClauseShardingConditionEngine.createShardingConditions(insertStatementContext, new ArrayList<>());
-        Assert.assertTrue(shardingConditionList.isEmpty());
+        when(insertStatementContext.getGeneratedKeyContext()).thenReturn(Optional.of(mock(GeneratedKeyContext.class)));
+        when(insertStatementContext.getInsertSelectContext()).thenReturn(mock(InsertSelectContext.class));
+        assertTrue(insertClauseShardingConditionEngine.createShardingConditions(insertStatementContext, Collections.emptyList()).isEmpty());
     }
-
 }