1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.submitted.immutable_constructor;
17
18 import static org.junit.jupiter.api.Assertions.assertEquals;
19
20 import java.io.Reader;
21
22 import org.apache.ibatis.BaseDataTest;
23 import org.apache.ibatis.exceptions.PersistenceException;
24 import org.apache.ibatis.io.Resources;
25 import org.apache.ibatis.session.SqlSession;
26 import org.apache.ibatis.session.SqlSessionFactory;
27 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
28 import org.junit.jupiter.api.Assertions;
29 import org.junit.jupiter.api.BeforeAll;
30 import org.junit.jupiter.api.Test;
31
32 final class ImmutablePOJOTest {
33
34 private static final Integer POJO_ID = 1;
35 private static final String POJO_DESCRIPTION = "Description of immutable";
36
37 private static SqlSessionFactory factory;
38
39 @BeforeAll
40 static void setupClass() throws Exception {
41 try (Reader reader = Resources
42 .getResourceAsReader("org/apache/ibatis/submitted/immutable_constructor/ibatisConfig.xml")) {
43 factory = new SqlSessionFactoryBuilder().build(reader);
44 }
45
46 BaseDataTest.runScript(factory.getConfiguration().getEnvironment().getDataSource(),
47 "org/apache/ibatis/submitted/immutable_constructor/CreateDB.sql");
48 }
49
50 @Test
51 void shouldLoadImmutablePOJOBySignature() {
52 try (SqlSession session = factory.openSession()) {
53 final ImmutablePOJOMapper mapper = session.getMapper(ImmutablePOJOMapper.class);
54 final ImmutablePOJO pojo = mapper.getImmutablePOJO(POJO_ID);
55
56 assertEquals(POJO_ID, pojo.getImmutableId());
57 assertEquals(POJO_DESCRIPTION, pojo.getImmutableDescription());
58 }
59 }
60
61 @Test
62 void shouldFailLoadingImmutablePOJO() {
63 try (SqlSession session = factory.openSession()) {
64 final ImmutablePOJOMapper mapper = session.getMapper(ImmutablePOJOMapper.class);
65 Assertions.assertThrows(PersistenceException.class, () -> mapper.getImmutablePOJONoMatchingConstructor(POJO_ID));
66 }
67 }
68
69 }