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());
}
-
}