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 java.io.IOException;
19 import java.io.Reader;
20
21 import org.apache.ibatis.builder.BuilderException;
22 import org.apache.ibatis.io.Resources;
23 import org.apache.ibatis.session.SqlSessionFactory;
24 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
25 import org.junit.jupiter.api.Assertions;
26 import org.junit.jupiter.api.Test;
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(
37 "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].",
38 exception.getMessage());
39 }
40 }
41
42 @Test
43 void bothSpecifySelectAndSelectProvider() throws IOException {
44 try (Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/repeatable/mybatis-config.xml")) {
45 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader, "development-derby");
46 BuilderException exception = Assertions.assertThrows(BuilderException.class,
47 () -> sqlSessionFactory.getConfiguration().addMapper(BothSelectAndSelectProviderMapper.class));
48 String message = exception.getMessage();
49 Assertions.assertTrue(message.startsWith("Detected conflicting annotations "));
50 Assertions.assertTrue(message.contains("'@org.apache.ibatis.annotations.Select("));
51 Assertions.assertTrue(message.contains("'@org.apache.ibatis.annotations.SelectProvider("));
52 Assertions.assertTrue(message.matches(".*databaseId=[\"]*,.*"));
53 Assertions.assertTrue(
54 message.endsWith("'org.apache.ibatis.submitted.repeatable.BothSelectAndSelectProviderMapper.getUser'."));
55 }
56 }
57
58 @Test
59 void bothSpecifySelectContainerAndSelectProviderContainer() throws IOException {
60 try (Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/repeatable/mybatis-config.xml")) {
61 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader, "development-derby");
62 BuilderException exception = Assertions.assertThrows(BuilderException.class, () -> sqlSessionFactory
63 .getConfiguration().addMapper(BothSelectContainerAndSelectProviderContainerMapper.class));
64 String message = exception.getMessage();
65 Assertions.assertTrue(message.startsWith("Detected conflicting annotations "));
66 Assertions.assertTrue(message.contains("'@org.apache.ibatis.annotations.Select("));
67 Assertions.assertTrue(message.contains("'@org.apache.ibatis.annotations.SelectProvider("));
68 Assertions.assertTrue(message.matches(".*databaseId=\"?hsql\"?,.*"));
69 Assertions.assertTrue(message.endsWith(
70 " on 'org.apache.ibatis.submitted.repeatable.BothSelectContainerAndSelectProviderContainerMapper.getUser'."));
71 }
72 }
73
74 }