1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.submitted.repeatable;
17
18 import org.apache.ibatis.builder.BuilderException;
19 import org.apache.ibatis.io.Resources;
20 import org.apache.ibatis.session.SqlSessionFactory;
21 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
22 import org.junit.jupiter.api.Assertions;
23 import org.junit.jupiter.api.Test;
24
25 import java.io.IOException;
26 import java.io.Reader;
27
28 class RepeatableErrorTest {
29
30 @Test
31 void noSuchStatementByCurrentDatabase() throws IOException {
32 try (Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/repeatable/mybatis-config.xml")) {
33 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader, "development-derby");
34 BuilderException exception = Assertions.assertThrows(BuilderException.class, () ->
35 sqlSessionFactory.getConfiguration().addMapper(NoDefineDefaultDatabaseMapper.class));
36 Assertions.assertEquals("Could not find a statement annotation that correspond a current database or default statement on method 'org.apache.ibatis.submitted.repeatable.NoDefineDefaultDatabaseMapper.getUser'. Current database id is [derby].", exception.getMessage());
37 }
38 }
39
40 @Test
41 void bothSpecifySelectAndSelectProvider() throws IOException {
42 try (Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/repeatable/mybatis-config.xml")) {
43 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader, "development-derby");
44 BuilderException exception = Assertions.assertThrows(BuilderException.class, () ->
45 sqlSessionFactory.getConfiguration().addMapper(BothSelectAndSelectProviderMapper.class));
46 String message = exception.getMessage();
47 Assertions.assertTrue(message.startsWith("Detected conflicting annotations "));
48 Assertions.assertTrue(message.contains("'@org.apache.ibatis.annotations.Select("));
49 Assertions.assertTrue(message.contains("'@org.apache.ibatis.annotations.SelectProvider("));
50 Assertions.assertTrue(message.matches(".*databaseId=[\"]*,.*"));
51 Assertions.assertTrue(message.endsWith(
52 "'org.apache.ibatis.submitted.repeatable.BothSelectAndSelectProviderMapper.getUser'."));
53 }
54 }
55
56 @Test
57 void bothSpecifySelectContainerAndSelectProviderContainer() throws IOException {
58 try (Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/repeatable/mybatis-config.xml")) {
59 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader, "development-derby");
60 BuilderException exception = Assertions.assertThrows(BuilderException.class, () ->
61 sqlSessionFactory.getConfiguration().addMapper(BothSelectContainerAndSelectProviderContainerMapper.class));
62 String message = exception.getMessage();
63 Assertions.assertTrue(message.startsWith("Detected conflicting annotations "));
64 Assertions.assertTrue(message.contains("'@org.apache.ibatis.annotations.Select("));
65 Assertions.assertTrue(message.contains("'@org.apache.ibatis.annotations.SelectProvider("));
66 Assertions.assertTrue(message.matches(".*databaseId=\"?hsql\"?,.*"));
67 Assertions.assertTrue(message.endsWith(
68 " on 'org.apache.ibatis.submitted.repeatable.BothSelectContainerAndSelectProviderContainerMapper.getUser'."));
69 }
70 }
71
72 }