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 4ad583aab10 Add more test cases on SingleTableLoadUtilsTest (#38092)
4ad583aab10 is described below

commit 4ad583aab10a4d161c317be24aa65fa620295b1d
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Feb 19 09:17:26 2026 +0800

    Add more test cases on SingleTableLoadUtilsTest (#38092)
---
 .../single/util/SingleTableLoadUtilsTest.java      | 81 ++++++++++++++--------
 1 file changed, 53 insertions(+), 28 deletions(-)

diff --git 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/util/SingleTableLoadUtilsTest.java
 
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/util/SingleTableLoadUtilsTest.java
index 2f68d9bd768..2d2d3eaa794 100644
--- 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/util/SingleTableLoadUtilsTest.java
+++ 
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/util/SingleTableLoadUtilsTest.java
@@ -17,7 +17,9 @@
 
 package org.apache.shardingsphere.single.util;
 
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
@@ -26,15 +28,24 @@ import 
org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.test.infra.framework.extension.mock.AutoMockExtension;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.mockito.MockedConstruction;
 
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashSet;
+import java.util.Optional;
 import java.util.TreeSet;
+import java.util.stream.Stream;
 
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockConstruction;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(AutoMockExtension.class)
@@ -54,39 +65,18 @@ class SingleTableLoadUtilsTest {
         
assertThat(SingleTableLoadUtils.getExcludedTables(Arrays.asList(builtRule1, 
builtRule2)), is(new TreeSet<>(Arrays.asList("dist_tbl", "actual_tbl"))));
     }
     
-    @Test
-    void assertGetFeatureRequiredSingleTablesWithEmptyEnhancedTableNames() {
-        ShardingSphereRule builtRule1 = mock(ShardingSphereRule.class);
-        TableMapperRuleAttribute tableMapperRuleAttribute = 
mock(TableMapperRuleAttribute.class);
-        
when(tableMapperRuleAttribute.getEnhancedTableNames()).thenReturn(Collections.emptyList());
-        when(builtRule1.getAttributes()).thenReturn(new 
RuleAttributes(tableMapperRuleAttribute));
-        ShardingSphereRule builtRule2 = mock(ShardingSphereRule.class);
-        when(builtRule2.getAttributes()).thenReturn(new RuleAttributes());
-        
assertThat(SingleTableLoadUtils.getFeatureRequiredSingleTables(Arrays.asList(builtRule1,
 builtRule2)), is(Collections.emptySet()));
-    }
-    
-    @Test
-    void assertGetFeatureRequiredSingleTablesWithDistributedTableNames() {
-        ShardingSphereRule builtRule1 = mock(ShardingSphereRule.class);
-        TableMapperRuleAttribute tableMapperRuleAttribute = 
mock(TableMapperRuleAttribute.class);
-        
when(tableMapperRuleAttribute.getEnhancedTableNames()).thenReturn(Collections.singleton("enhanced_tbl"));
-        
when(tableMapperRuleAttribute.getDistributedTableNames()).thenReturn(Collections.singleton("dist_tbl"));
-        when(builtRule1.getAttributes()).thenReturn(new 
RuleAttributes(tableMapperRuleAttribute));
-        ShardingSphereRule builtRule2 = mock(ShardingSphereRule.class);
-        when(builtRule2.getAttributes()).thenReturn(new RuleAttributes());
-        
assertThat(SingleTableLoadUtils.getFeatureRequiredSingleTables(Arrays.asList(builtRule1,
 builtRule2)), is(Collections.emptySet()));
-    }
-    
-    @Test
-    void assertGetFeatureRequiredSingleTablesWithoutDistributedTableNames() {
+    @ParameterizedTest(name = "{0}")
+    @MethodSource("getFeatureRequiredSingleTablesArguments")
+    void assertGetFeatureRequiredSingleTables(final String name, final 
Collection<String> enhancedTableNames,
+                                              final Collection<String> 
distributedTableNames, final Collection<String> expectedTableNames) {
         ShardingSphereRule builtRule1 = mock(ShardingSphereRule.class);
         TableMapperRuleAttribute tableMapperRuleAttribute = 
mock(TableMapperRuleAttribute.class);
-        
when(tableMapperRuleAttribute.getEnhancedTableNames()).thenReturn(Collections.singleton("enhanced_tbl"));
-        
when(tableMapperRuleAttribute.getDistributedTableNames()).thenReturn(Collections.emptyList());
+        
when(tableMapperRuleAttribute.getEnhancedTableNames()).thenReturn(enhancedTableNames);
+        
when(tableMapperRuleAttribute.getDistributedTableNames()).thenReturn(distributedTableNames);
         when(builtRule1.getAttributes()).thenReturn(new 
RuleAttributes(tableMapperRuleAttribute));
         ShardingSphereRule builtRule2 = mock(ShardingSphereRule.class);
         when(builtRule2.getAttributes()).thenReturn(new RuleAttributes());
-        
assertThat(SingleTableLoadUtils.getFeatureRequiredSingleTables(Arrays.asList(builtRule1,
 builtRule2)), is(Collections.singleton("enhanced_tbl")));
+        
assertThat(SingleTableLoadUtils.getFeatureRequiredSingleTables(Arrays.asList(builtRule1,
 builtRule2)), is(expectedTableNames));
     }
     
     @Test
@@ -107,13 +97,48 @@ class SingleTableLoadUtilsTest {
         assertThat(SingleTableLoadUtils.getAllTablesNodeStr(databaseType), 
is("*.*"));
     }
     
+    @Test
+    void assertGetAllTablesNodeStrWithSchema() {
+        try (MockedConstruction<DatabaseTypeRegistry> ignored = 
mockSchemaRegistry()) {
+            assertThat(SingleTableLoadUtils.getAllTablesNodeStr(databaseType), 
is("*.*.*"));
+        }
+    }
+    
     @Test
     void assertGetAllTablesNodeStrFromDataSource() {
         
assertThat(SingleTableLoadUtils.getAllTablesNodeStrFromDataSource(databaseType, 
"foo_ds", "foo_schema"), is("foo_ds.*"));
     }
     
+    @Test
+    void assertGetAllTablesNodeStrFromDataSourceWithSchema() {
+        try (MockedConstruction<DatabaseTypeRegistry> ignored = 
mockSchemaRegistry()) {
+            
assertThat(SingleTableLoadUtils.getAllTablesNodeStrFromDataSource(databaseType, 
"foo_ds", "foo_schema"), is("foo_ds.foo_schema.*"));
+        }
+    }
+    
     @Test
     void assertGetDataNodeString() {
         assertThat(SingleTableLoadUtils.getDataNodeString(databaseType, 
"foo_ds", "foo_schema", "foo_tbl"), is("foo_ds.foo_tbl"));
     }
+    
+    @Test
+    void assertGetDataNodeStringWithSchema() {
+        try (MockedConstruction<DatabaseTypeRegistry> ignored = 
mockSchemaRegistry()) {
+            assertThat(SingleTableLoadUtils.getDataNodeString(databaseType, 
"foo_ds", "foo_schema", "foo_tbl"), is("foo_ds.foo_schema.foo_tbl"));
+        }
+    }
+    
+    private MockedConstruction<DatabaseTypeRegistry> mockSchemaRegistry() {
+        DialectDatabaseMetaData dialectDatabaseMetaData = 
mock(DialectDatabaseMetaData.class, RETURNS_DEEP_STUBS);
+        
when(dialectDatabaseMetaData.getSchemaOption().getDefaultSchema()).thenReturn(Optional.of("foo_schema"));
+        return mockConstruction(DatabaseTypeRegistry.class, (mock, context) -> 
when(mock.getDialectDatabaseMetaData()).thenReturn(dialectDatabaseMetaData));
+    }
+    
+    private static Stream<Arguments> getFeatureRequiredSingleTablesArguments() 
{
+        return Stream.of(
+                Arguments.of("without enhanced table names", 
Collections.emptyList(), Collections.emptyList(), Collections.emptySet()),
+                Arguments.of("with distributed table names", 
Collections.singleton("enhanced_tbl"), Collections.singleton("dist_tbl"), 
Collections.emptySet()),
+                Arguments.of("without distributed table names", 
Collections.singleton("enhanced_tbl"), Collections.emptyList(), 
Collections.singleton("enhanced_tbl")));
+    }
+    
 }

Reply via email to