Skip to content

Commit 2d2b6d6

Browse files
authored
Add more test cases on IndexToken (#33677)
1 parent 9cc6f5a commit 2d2b6d6

File tree

1 file changed

+44
-9
lines changed
  • features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo

1 file changed

+44
-9
lines changed

features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexTokenTest.java

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
package org.apache.shardingsphere.sharding.rewrite.token.pojo;
1919

2020
import org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
21-
import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
21+
import org.apache.shardingsphere.infra.binder.context.statement.ddl.CreateIndexStatementContext;
22+
import org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
2223
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
2324
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
2425
import org.apache.shardingsphere.infra.route.context.RouteMapper;
@@ -27,24 +28,58 @@
2728
import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
2829
import org.junit.jupiter.api.Test;
2930

31+
import java.util.Arrays;
3032
import java.util.Collections;
3133

3234
import static org.hamcrest.CoreMatchers.is;
3335
import static org.hamcrest.MatcherAssert.assertThat;
3436
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
3537
import static org.mockito.Mockito.mock;
3638
import static org.mockito.Mockito.when;
37-
import static org.mockito.Mockito.withSettings;
3839

3940
class IndexTokenTest {
4041

4142
@Test
42-
void assertToString() {
43-
IndexToken indexToken = new IndexToken(0, 0, new IdentifierValue("t_order_index"),
44-
mock(SQLStatementContext.class, withSettings().extraInterfaces(TableAvailable.class).defaultAnswer(RETURNS_DEEP_STUBS)), mock(ShardingRule.class), mock(ShardingSphereSchema.class));
45-
RouteUnit routeUnit = mock(RouteUnit.class);
46-
when(routeUnit.getTableMappers()).thenReturn(Collections.singletonList(new RouteMapper("t_order", "t_order_0")));
47-
when(routeUnit.getDataSourceMapper()).thenReturn(new RouteMapper(DefaultDatabase.LOGIC_NAME, "ds_0"));
48-
assertThat(indexToken.toString(routeUnit), is("t_order_index_t_order_0"));
43+
void assertToStringWithNotShardingTable() {
44+
IndexToken indexToken = new IndexToken(0, 0, new IdentifierValue("foo_idx"), mock(SelectStatementContext.class, RETURNS_DEEP_STUBS), mock(ShardingRule.class), mockSchema());
45+
assertThat(indexToken.toString(mockRouteUnit()), is("foo_idx"));
46+
}
47+
48+
@Test
49+
void assertToStringWithShardingTable() {
50+
ShardingRule rule = mock(ShardingRule.class);
51+
when(rule.isShardingTable("foo_tbl")).thenReturn(true);
52+
IndexToken indexToken = new IndexToken(0, 0, new IdentifierValue("foo_idx"), mock(SelectStatementContext.class, RETURNS_DEEP_STUBS), rule, mockSchema());
53+
assertThat(indexToken.toString(mockRouteUnit()), is("foo_idx_foo_tbl_0"));
54+
}
55+
56+
@Test
57+
void assertToStringWithShardingTableButNotTableAvailable() {
58+
ShardingRule rule = mock(ShardingRule.class);
59+
when(rule.isShardingTable("foo_tbl")).thenReturn(true);
60+
IndexToken indexToken = new IndexToken(0, 0, new IdentifierValue("foo_idx"), mock(SQLStatementContext.class, RETURNS_DEEP_STUBS), rule, mockSchema());
61+
assertThat(indexToken.toString(mockRouteUnit()), is("foo_idx"));
62+
}
63+
64+
@Test
65+
void assertToStringWithShardingTableAndGeneratedIndex() {
66+
CreateIndexStatementContext sqlStatementContext = mock(CreateIndexStatementContext.class, RETURNS_DEEP_STUBS);
67+
when(sqlStatementContext.isGeneratedIndex()).thenReturn(true);
68+
IndexToken indexToken = new IndexToken(0, 0, new IdentifierValue("bar_idx"), sqlStatementContext, mock(ShardingRule.class), mockSchema());
69+
assertThat(indexToken.toString(mockRouteUnit()), is(" bar_idx_foo_tbl_0 "));
70+
}
71+
72+
private ShardingSphereSchema mockSchema() {
73+
ShardingSphereSchema result = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
74+
when(result.getAllTableNames()).thenReturn(Arrays.asList("no_tbl", "foo_tbl"));
75+
when(result.getTable("foo_tbl").containsIndex("foo_idx")).thenReturn(true);
76+
return result;
77+
}
78+
79+
private RouteUnit mockRouteUnit() {
80+
RouteUnit result = mock(RouteUnit.class);
81+
when(result.getTableMappers()).thenReturn(Collections.singleton(new RouteMapper("foo_tbl", "foo_tbl_0")));
82+
when(result.getDataSourceMapper()).thenReturn(new RouteMapper(DefaultDatabase.LOGIC_NAME, "ds_0"));
83+
return result;
4984
}
5085
}

0 commit comments

Comments
 (0)