Skip to content

Commit

Permalink
Add test cases on DefaultDataSourceChangedProcessor
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed Oct 31, 2024
1 parent 7094465 commit 6fe9e58
Showing 1 changed file with 79 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.shardingsphere.single.rule.changed;

import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.event.dispatch.rule.alter.AlterRuleItemEvent;
import org.apache.shardingsphere.mode.event.dispatch.rule.drop.DropRuleItemEvent;
import org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor;
import org.apache.shardingsphere.single.config.SingleRuleConfiguration;
import org.apache.shardingsphere.single.rule.SingleRule;
import org.junit.jupiter.api.Test;

import java.util.Collections;
import java.util.Optional;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

class DefaultDataSourceChangedProcessorTest {

@SuppressWarnings("unchecked")
private final RuleItemConfigurationChangedProcessor<SingleRuleConfiguration, String> processor = TypedSPILoader.getService(
RuleItemConfigurationChangedProcessor.class, "single.default_data_source");

@Test
void assertSwapRuleItemConfiguration() {
String actual = processor.swapRuleItemConfiguration(mock(AlterRuleItemEvent.class), "foo_ds");
assertThat(actual, is("foo_ds"));
}

@Test
void assertFindRuleConfiguration() {
SingleRuleConfiguration ruleConfig = mock(SingleRuleConfiguration.class);
assertThat(processor.findRuleConfiguration(mockDatabase(ruleConfig)), is(ruleConfig));
}

private ShardingSphereDatabase mockDatabase(final SingleRuleConfiguration ruleConfig) {
SingleRule rule = mock(SingleRule.class);
when(rule.getConfiguration()).thenReturn(ruleConfig);
ShardingSphereDatabase result = mock(ShardingSphereDatabase.class);
when(result.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.singleton(rule)));
return result;
}

@Test
void assertChangeRuleItemConfiguration() {
SingleRuleConfiguration currentRuleConfig = new SingleRuleConfiguration(Collections.emptyList(), "foo_ds");
String toBeChangedItemConfig = "bar_ds";
processor.changeRuleItemConfiguration(mock(AlterRuleItemEvent.class), currentRuleConfig, toBeChangedItemConfig);
assertThat(currentRuleConfig.getDefaultDataSource(), is(Optional.of("bar_ds")));
}

@Test
void assertDropRuleItemConfiguration() {
SingleRuleConfiguration currentRuleConfig = new SingleRuleConfiguration(Collections.emptyList(), "foo_ds");
processor.dropRuleItemConfiguration(mock(DropRuleItemEvent.class), currentRuleConfig);
assertFalse(currentRuleConfig.getDefaultDataSource().isPresent());
}
}

0 comments on commit 6fe9e58

Please sign in to comment.