You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2024/11/16 08:48:09 UTC
(shardingsphere) branch master updated: Add more test cases on ShardingConstraintTokenGenerator (#33689)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 1488b806113 Add more test cases on ShardingConstraintTokenGenerator (#33689)
1488b806113 is described below
commit 1488b806113317726fd18df4c9315b87eb5b0b9f
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sat Nov 16 16:48:03 2024 +0800
Add more test cases on ShardingConstraintTokenGenerator (#33689)
---
.../impl/ShardingConstraintTokenGenerator.java | 5 ++--
.../impl/ShardingConstraintTokenGeneratorTest.java | 34 ++++++++++++++++------
2 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGenerator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGenerator.java
index 44a392b2e95..0af8d014b80 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGenerator.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGenerator.java
@@ -36,7 +36,7 @@ import java.util.LinkedList;
@RequiredArgsConstructor
public final class ShardingConstraintTokenGenerator implements CollectionSQLTokenGenerator<SQLStatementContext> {
- private final ShardingRule shardingRule;
+ private final ShardingRule rule;
@Override
public boolean isGenerateSQLToken(final SQLStatementContext sqlStatementContext) {
@@ -49,8 +49,9 @@ public final class ShardingConstraintTokenGenerator implements CollectionSQLToke
if (sqlStatementContext instanceof ConstraintAvailable) {
for (ConstraintSegment each : ((ConstraintAvailable) sqlStatementContext).getConstraints()) {
IdentifierValue constraintIdentifier = each.getIdentifier();
+ // TODO make sure can remove null check here? @duanzhengqiang
if (null != constraintIdentifier) {
- result.add(new ConstraintToken(each.getStartIndex(), each.getStopIndex(), constraintIdentifier, sqlStatementContext, shardingRule));
+ result.add(new ConstraintToken(each.getStartIndex(), each.getStopIndex(), constraintIdentifier, sqlStatementContext, rule));
}
}
}
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGeneratorTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGeneratorTest.java
index 07428d81675..6921f800c8b 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGeneratorTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGeneratorTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.sharding.rewrite.token.generator.impl;
-import org.apache.shardingsphere.infra.binder.context.statement.UnknownSQLStatementContext;
+import org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.context.statement.ddl.AlterTableStatementContext;
import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
import org.apache.shardingsphere.sharding.rewrite.token.pojo.ConstraintToken;
@@ -28,29 +28,45 @@ import org.junit.jupiter.api.Test;
import java.util.Collection;
import java.util.Collections;
-import java.util.LinkedList;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
class ShardingConstraintTokenGeneratorTest {
@Test
- void assertIsGenerateSQLToken() {
+ void assertIsNotGenerateSQLTokenWithNotConstraintAvailable() {
ShardingConstraintTokenGenerator generator = new ShardingConstraintTokenGenerator(mock(ShardingRule.class));
- assertFalse(generator.isGenerateSQLToken(mock(UnknownSQLStatementContext.class)));
- AlterTableStatementContext alterTableStatementContext = mock(AlterTableStatementContext.class);
- Collection<ConstraintSegment> constraintSegments = new LinkedList<>();
- when(alterTableStatementContext.getConstraints()).thenReturn(constraintSegments);
+ assertFalse(generator.isGenerateSQLToken(mock(SQLStatementContext.class)));
+ }
+
+ @Test
+ void assertIsNotGenerateSQLTokenWithEmptyConstraint() {
+ ShardingConstraintTokenGenerator generator = new ShardingConstraintTokenGenerator(mock(ShardingRule.class));
+ AlterTableStatementContext alterTableStatementContext = mock(AlterTableStatementContext.class, RETURNS_DEEP_STUBS);
+ when(alterTableStatementContext.getConstraints().isEmpty()).thenReturn(true);
assertFalse(generator.isGenerateSQLToken(alterTableStatementContext));
- constraintSegments.add(mock(ConstraintSegment.class));
+ }
+
+ @Test
+ void assertIsGenerateSQLToken() {
+ ShardingConstraintTokenGenerator generator = new ShardingConstraintTokenGenerator(mock(ShardingRule.class));
+ AlterTableStatementContext alterTableStatementContext = mock(AlterTableStatementContext.class, RETURNS_DEEP_STUBS);
assertTrue(generator.isGenerateSQLToken(alterTableStatementContext));
}
+ @Test
+ void assertGenerateSQLTokensWithNotConstraintAvailable() {
+ ShardingConstraintTokenGenerator generator = new ShardingConstraintTokenGenerator(mock(ShardingRule.class));
+ Collection<SQLToken> actual = generator.generateSQLTokens(mock(SQLStatementContext.class));
+ assertTrue(actual.isEmpty());
+ }
+
@Test
void assertGenerateSQLTokens() {
ConstraintSegment constraintSegment = mock(ConstraintSegment.class);
@@ -66,7 +82,7 @@ class ShardingConstraintTokenGeneratorTest {
assertConstraintToken((ConstraintToken) actual.iterator().next());
}
- private static void assertConstraintToken(final ConstraintToken actual) {
+ private void assertConstraintToken(final ConstraintToken actual) {
assertThat(actual.getStartIndex(), is(1));
assertThat(actual.getStopIndex(), is(3));
}