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