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 cab77841116 Add unit for MetaDataPersistService.persistTransactionRule(final Properties props, final boolean isOverwrit) #16091 (#17714) cab77841116 is described below commit cab77841116cf3269892f0e9bd224ab2859fdd6c Author: yangsen <73088519+yangse...@users.noreply.github.com> AuthorDate: Tue May 17 00:07:27 2022 +0800 Add unit for MetaDataPersistService.persistTransactionRule(final Properties props, final boolean isOverwrit) #16091 (#17714) * Add unit for MetaDataPersistService.persistTransactionRule(final Properties props, final boolean isOverwrit) (#16091) Co-authored-by: yangsen <73088519+baoliesho...@users.noreply.github.com> Co-authored-by: sen4.yang <sen4.y...@ly.com> --- .../persist/MetaDataPersistServiceTest.java | 35 +++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistServiceTest.java b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistServiceTest.java index f272a8ac943..48c0b7ac2e2 100644 --- a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistServiceTest.java +++ b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistServiceTest.java @@ -33,6 +33,8 @@ import org.apache.shardingsphere.mode.metadata.persist.service.impl.PropertiesPe import org.apache.shardingsphere.mode.metadata.persist.service.impl.DatabaseRulePersistService; import org.apache.shardingsphere.mode.persist.PersistRepository; import org.apache.shardingsphere.test.mock.MockedDataSource; +import org.apache.shardingsphere.transaction.config.TransactionRuleConfiguration; +import org.apache.shardingsphere.transaction.core.TransactionType; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -50,12 +52,16 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; -import java.util.Properties; import java.util.stream.Collectors; +import java.util.Properties; +import java.util.Optional; +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.verify; +import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public final class MetaDataPersistServiceTest { @@ -164,4 +170,31 @@ public final class MetaDataPersistServiceTest { Map<String, DataSource> resultEffectiveDataSources = metaDataPersistService.getEffectiveDataSources("foo_db", databaseConfigs); assertTrue(resultEffectiveDataSources.isEmpty()); } + + @Test + public void assertPersistTransactionRule() { + mockGlobalRulePersistServiceForLoad(); + Properties properties = createTransactionProperties(); + metaDataPersistService.persistTransactionRule(properties, true); + Collection<RuleConfiguration> ruleConfigs = globalRuleService.load(); + Optional<RuleConfiguration> ruleConfig = ruleConfigs.stream().filter(each -> each instanceof TransactionRuleConfiguration).findFirst(); + assertThat(ruleConfig.get(), is(createAssertTransactionRuleConfiguration())); + } + + private Properties createTransactionProperties() { + Properties result = new Properties(); + result.setProperty("type", TransactionType.LOCAL.name()); + return result; + } + + private void mockGlobalRulePersistServiceForLoad() { + RuleConfiguration ruleConfiguration = new TransactionRuleConfiguration(TransactionType.LOCAL.name(), null, new Properties()); + when(globalRuleService.load()).thenReturn(Collections.singleton(ruleConfiguration)); + } + + private RuleConfiguration createAssertTransactionRuleConfiguration() { + RuleConfiguration result = new TransactionRuleConfiguration(TransactionType.LOCAL.name(), null, createTransactionProperties()); + return result; + } + }