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 9f0efa3de4a Fixes #28681 (#33035)
9f0efa3de4a is described below

commit 9f0efa3de4ab45a4ef404d60b886d3a318b41085
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Sep 28 17:16:40 2024 +0800

    Fixes #28681 (#33035)
---
 ... => RuleMetaDataShardingSphereRuleFixture.java} |  2 +-
 .../metadata/database/rule/RuleMetaDataTest.java   | 48 ++++++++++++++++++----
 2 files changed, 42 insertions(+), 8 deletions(-)

diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/ShardingSphereRuleFixture.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataShardingSphereRuleFixture.java
similarity index 93%
rename from 
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/ShardingSphereRuleFixture.java
rename to 
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataShardingSphereRuleFixture.java
index 67f6ca44944..e7c3d8b4b09 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/ShardingSphereRuleFixture.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataShardingSphereRuleFixture.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 
 import static org.mockito.Mockito.mock;
 
-public class ShardingSphereRuleFixture implements ShardingSphereRule {
+public class RuleMetaDataShardingSphereRuleFixture implements 
ShardingSphereRule {
     
     @Override
     public RuleConfiguration getConfiguration() {
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataTest.java
index 493a55c8c75..b59c26552a8 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/rule/RuleMetaDataTest.java
@@ -17,13 +17,20 @@
 
 package org.apache.shardingsphere.infra.metadata.database.rule;
 
+import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.rule.attribute.RuleAttribute;
+import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
+import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
 import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
+import java.util.Map;
+import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
@@ -33,24 +40,46 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 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 RuleMetaDataTest {
     
-    private final RuleMetaData ruleMetaData = new 
RuleMetaData(Arrays.asList(new ShardingSphereRuleFixture(), 
mock(ShardingSphereRule.class, RETURNS_DEEP_STUBS)));
+    private RuleMetaData ruleMetaData;
+    
+    @BeforeEach
+    void setUp() {
+        ruleMetaData = new RuleMetaData(Arrays.asList(new 
RuleMetaDataShardingSphereRuleFixture(), mockDataSourceMapperRule(), 
mockDataNodeRule()));
+    }
+    
+    private ShardingSphereRule mockDataSourceMapperRule() {
+        ShardingSphereRule result = mock(ShardingSphereRule.class, 
RETURNS_DEEP_STUBS);
+        DataSourceMapperRuleAttribute ruleAttribute = 
mock(DataSourceMapperRuleAttribute.class, RETURNS_DEEP_STUBS);
+        
when(ruleAttribute.getDataSourceMapper().values()).thenReturn(Collections.singletonList(Collections.singletonList("foo_ds")));
+        
when(result.getAttributes().findAttribute(DataSourceMapperRuleAttribute.class)).thenReturn(Optional.of(ruleAttribute));
+        return result;
+    }
+    
+    private ShardingSphereRule mockDataNodeRule() {
+        ShardingSphereRule result = mock(ShardingSphereRule.class, 
RETURNS_DEEP_STUBS);
+        DataNodeRuleAttribute ruleAttribute = 
mock(DataNodeRuleAttribute.class, RETURNS_DEEP_STUBS);
+        
when(ruleAttribute.getAllDataNodes().values()).thenReturn(Collections.singleton(Collections.singleton(new
 DataNode("foo_db.foo_tbl"))));
+        
when(result.getAttributes().findAttribute(DataNodeRuleAttribute.class)).thenReturn(Optional.of(ruleAttribute));
+        return result;
+    }
     
     @Test
     void assertGetConfigurations() {
-        assertThat(ruleMetaData.getConfigurations().size(), is(2));
+        assertThat(ruleMetaData.getConfigurations().size(), is(3));
     }
     
     @Test
     void assertFindRules() {
-        
assertThat(ruleMetaData.findRules(ShardingSphereRuleFixture.class).size(), 
is(1));
+        
assertThat(ruleMetaData.findRules(RuleMetaDataShardingSphereRuleFixture.class).size(),
 is(1));
     }
     
     @Test
     void assertFindSingleRule() {
-        
assertTrue(ruleMetaData.findSingleRule(ShardingSphereRuleFixture.class).isPresent());
+        
assertTrue(ruleMetaData.findSingleRule(RuleMetaDataShardingSphereRuleFixture.class).isPresent());
     }
     
     @Test
@@ -60,7 +89,7 @@ class RuleMetaDataTest {
     
     @Test
     void assertGetSingleRule() {
-        
assertThat(ruleMetaData.getSingleRule(ShardingSphereRuleFixture.class), 
instanceOf(ShardingSphereRuleFixture.class));
+        
assertThat(ruleMetaData.getSingleRule(RuleMetaDataShardingSphereRuleFixture.class),
 instanceOf(RuleMetaDataShardingSphereRuleFixture.class));
     }
     
     @Test
@@ -69,12 +98,17 @@ class RuleMetaDataTest {
     }
     
     @Test
-    void assertGetInUsedStorageUnitNameAndRulesMapWhenRulesAreEmpty() {
-        assertTrue(new 
RuleMetaData(Collections.emptyList()).getInUsedStorageUnitNameAndRulesMap().isEmpty());
+    void assertGetInUsedStorageUnitNameAndRulesMap() {
+        Map<String, Collection<Class<? extends ShardingSphereRule>>> actual = 
ruleMetaData.getInUsedStorageUnitNameAndRulesMap();
+        assertThat(actual.size(), is(2));
+        assertTrue(actual.containsKey("foo_ds"));
+        assertTrue(actual.containsKey("foo_db"));
     }
     
     @Test
     void assertGetAttributes() {
         assertTrue(ruleMetaData.getAttributes(RuleAttribute.class).isEmpty());
+        
assertFalse(ruleMetaData.getAttributes(DataSourceMapperRuleAttribute.class).isEmpty());
+        
assertFalse(ruleMetaData.getAttributes(DataNodeRuleAttribute.class).isEmpty());
     }
 }

Reply via email to