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 54aab81e999 Add test case for ShardingSphereMetaData.addDatabase() 
(#18814)
54aab81e999 is described below

commit 54aab81e99910ddeccdf5278ea734f006f94b086
Author: Ziyuan Han <[email protected]>
AuthorDate: Tue Jul 5 11:43:55 2022 +0800

    Add test case for ShardingSphereMetaData.addDatabase() (#18814)
---
 .../infra/metadata/ShardingSphereMetaDataTest.java | 30 ++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
index 626ccdf9dba..3004ebb7813 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
@@ -18,25 +18,51 @@
 package org.apache.shardingsphere.infra.metadata;
 
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResource;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.rule.identifier.type.ResourceHeldRule;
 import org.apache.shardingsphere.test.mock.MockedDataSource;
 import org.junit.Test;
+import org.mockito.MockedStatic;
 
 import javax.sql.DataSource;
+import java.sql.SQLException;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 public final class ShardingSphereMetaDataTest {
-    
+
+    @Test
+    public void assertAddDatabase() throws SQLException {
+        ShardingSphereResource resource = mock(ShardingSphereResource.class);
+        DataSource dataSource = new MockedDataSource();
+        ResourceHeldRule<?> databaseResourceHeldRule = 
mock(ResourceHeldRule.class);
+        ResourceHeldRule<?> globalResourceHeldRule = 
mock(ResourceHeldRule.class);
+        ShardingSphereDatabase database = mockDatabase(resource, dataSource, 
databaseResourceHeldRule);
+        MockedStatic<ShardingSphereDatabase> mockedStatic = 
mockStatic(ShardingSphereDatabase.class);
+        DatabaseType databaseType = mock(DatabaseType.class);
+        mockedStatic.when(() -> ShardingSphereDatabase.create("foo_db", 
databaseType)).thenReturn(database);
+        Map<String, ShardingSphereDatabase> databases = 
Collections.singletonMap("foo_db", database);
+        ShardingSphereMetaData metaData = new ShardingSphereMetaData(
+                new HashMap<>(databases),
+                new 
ShardingSphereRuleMetaData(Collections.singleton(globalResourceHeldRule)), new 
ConfigurationProperties(new Properties()));
+        metaData.addDatabase("foo_db", databaseType);
+        assertThat(metaData.getDatabases(), is(databases));
+        verify(globalResourceHeldRule).addResource(database);
+    }
+
     @Test
     public void assertDropDatabase() {
         ShardingSphereResource resource = mock(ShardingSphereResource.class);
@@ -52,7 +78,7 @@ public final class ShardingSphereMetaDataTest {
         verify(databaseResourceHeldRule).closeStaleResource("foo_db");
         verify(globalResourceHeldRule).closeStaleResource("foo_db");
     }
-    
+
     private ShardingSphereDatabase mockDatabase(final ShardingSphereResource 
resource, final DataSource dataSource, final ResourceHeldRule<?> 
databaseResourceHeldRule) {
         ShardingSphereDatabase result = mock(ShardingSphereDatabase.class);
         when(result.getName()).thenReturn("foo_db");

Reply via email to