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