Package com.alibaba.cobar.client.router.rules

Source Code of com.alibaba.cobar.client.router.rules.IBatisNamespaceRuleTest

package com.alibaba.cobar.client.router.rules;

import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;

import java.util.List;

import org.testng.annotations.Test;

import com.alibaba.cobar.client.router.rules.ibatis.IBatisNamespaceRule;
import com.alibaba.cobar.client.router.support.IBatisRoutingFact;
import com.alibaba.cobar.client.support.utils.CollectionUtils;

@Test
public class IBatisNamespaceRuleTest{
    public void testNamespaceRuleNormally() {
        IBatisNamespaceRule rule = new IBatisNamespaceRule("com.alibaba.cobar.client.entity.Tweet",
                "p1, p2");
        List<String> shardIds = rule.action();
        assertNotNull(shardIds);
        assertEquals(2, shardIds.size());

        IBatisRoutingFact fact = new IBatisRoutingFact(
                "com.alibaba.cobar.client.entity.Tweet.update", null);
        assertTrue(rule.isDefinedAt(fact));
        fact = new IBatisRoutingFact("com.alibaba.cobar.client.entity.Tweet.delete", null);
        assertTrue(rule.isDefinedAt(fact));
        fact = new IBatisRoutingFact("com.alibaba.cobar.client.entity.Twet.delete", null);
        assertFalse(rule.isDefinedAt(fact));
    }

    public void testNamespaceRuleNormallyWithCustomActionPatternSeparator() {
        IBatisNamespaceRule rule = new IBatisNamespaceRule("com.alibaba.cobar.client.entity.Tweet",
                "p1, p2");
        rule.setActionPatternSeparator(";");
        List<String> shards = rule.action();
        assertTrue(CollectionUtils.isNotEmpty(shards));
        assertEquals(1, shards.size());

        rule = new IBatisNamespaceRule("com.alibaba.cobar.client.entity.Tweet", "p1; p2");
        rule.setActionPatternSeparator(";");
        shards = null;
        shards = rule.action();
        assertTrue(CollectionUtils.isNotEmpty(shards));
        assertEquals(2, shards.size());

        IBatisRoutingFact fact = new IBatisRoutingFact(
                "com.alibaba.cobar.client.entity.Tweet.update", null);
        assertTrue(rule.isDefinedAt(fact));
        fact = new IBatisRoutingFact("com.alibaba.cobar.client.entity.Tweet.delete", null);
        assertTrue(rule.isDefinedAt(fact));
        fact = new IBatisRoutingFact("com.alibaba.cobar.client.entity.Twet.delete", null);
        assertFalse(rule.isDefinedAt(fact));
    }

    public void testNamespaceRuleAbnormally() {
        try {
            new IBatisNamespaceRule("", "");
            fail();
        } catch (IllegalArgumentException e) {
            // pass
        }

        try {
            new IBatisNamespaceRule("", null);
            fail();
        } catch (IllegalArgumentException e) {
            // pass
        }

        try {
            new IBatisNamespaceRule(null, "");
            fail();
        } catch (IllegalArgumentException e) {
            // pass
        }

        try {
            new IBatisNamespaceRule(null, null);
            fail();
        } catch (IllegalArgumentException e) {
            // pass
        }

        IBatisNamespaceRule rule = new IBatisNamespaceRule("com.alibaba.cobar.client.entity.Tweet",
                "p1, p2");
        try {
            rule.setActionPatternSeparator(null);
        } catch (IllegalArgumentException e) {
            // pass
        }

        try {
            rule.isDefinedAt(null);
            fail();
        } catch (IllegalArgumentException e) {
            // pass
        }
    }
}
TOP

Related Classes of com.alibaba.cobar.client.router.rules.IBatisNamespaceRuleTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.