1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package examples.column.comparison;
17
18 import static examples.column.comparison.ColumnComparisonDynamicSqlSupport.*;
19 import static org.assertj.core.api.Assertions.assertThat;
20 import static org.mybatis.dynamic.sql.SqlBuilder.*;
21
22 import java.util.List;
23
24 import org.junit.jupiter.api.Test;
25 import org.mybatis.dynamic.sql.render.RenderingStrategies;
26 import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
27 import org.springframework.beans.factory.annotation.Autowired;
28 import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
29
30 @SpringJUnitConfig(classes = ColumnComparisonConfiguration.class)
31 class ColumnComparisonTest {
32
33 @Autowired
34 private ColumnComparisonMapper mapper;
35
36 @Test
37 void testColumnComparisonLessThan() {
38 SelectStatementProvider selectStatement = select(number1, number2)
39 .from(columnComparison)
40 .where(number1, isLessThan(number2))
41 .orderBy(number1, number2)
42 .build()
43 .render(RenderingStrategies.MYBATIS3);
44
45 String expected = "select number1, number2 "
46 + "from ColumnComparison "
47 + "where number1 < number2 "
48 + "order by number1, number2";
49
50 List<ColumnComparisonRecord> records = mapper.selectMany(selectStatement);
51
52 assertThat(selectStatement.getSelectStatement()).isEqualTo(expected);
53 assertThat(records).hasSize(5);
54 assertThat(records.get(0).number1()).isEqualTo(1);
55 assertThat(records.get(4).number1()).isEqualTo(5);
56 }
57
58 @Test
59 void testColumnComparisonLessThanOrEqual() {
60 SelectStatementProvider selectStatement = select(number1, number2)
61 .from(columnComparison)
62 .where(number1, isLessThanOrEqualTo(number2))
63 .orderBy(number1, number2)
64 .build()
65 .render(RenderingStrategies.MYBATIS3);
66
67 String expected = "select number1, number2 "
68 + "from ColumnComparison "
69 + "where number1 <= number2 "
70 + "order by number1, number2";
71
72 List<ColumnComparisonRecord> records = mapper.selectMany(selectStatement);
73
74 assertThat(selectStatement.getSelectStatement()).isEqualTo(expected);
75 assertThat(records).hasSize(6);
76 assertThat(records.get(0).number1()).isEqualTo(1);
77 assertThat(records.get(5).number2()).isEqualTo(6);
78 }
79
80 @Test
81 void testColumnComparisonGreaterThan() {
82 SelectStatementProvider selectStatement = select(number1, number2)
83 .from(columnComparison)
84 .where(number1, isGreaterThan(number2))
85 .orderBy(number1, number2)
86 .build()
87 .render(RenderingStrategies.MYBATIS3);
88
89 String expected = "select number1, number2 "
90 + "from ColumnComparison "
91 + "where number1 > number2 "
92 + "order by number1, number2";
93
94 List<ColumnComparisonRecord> records = mapper.selectMany(selectStatement);
95
96 assertThat(selectStatement.getSelectStatement()).isEqualTo(expected);
97 assertThat(records).hasSize(5);
98 assertThat(records.get(0).number1()).isEqualTo(7);
99 assertThat(records.get(4).number1()).isEqualTo(11);
100 }
101
102 @Test
103 void testColumnComparisonGreaterThanOrEqual() {
104 SelectStatementProvider selectStatement = select(number1, number2)
105 .from(columnComparison)
106 .where(number1, isGreaterThanOrEqualTo(number2))
107 .orderBy(number1, number2)
108 .build()
109 .render(RenderingStrategies.MYBATIS3);
110
111 String expected = "select number1, number2 "
112 + "from ColumnComparison "
113 + "where number1 >= number2 "
114 + "order by number1, number2";
115
116 List<ColumnComparisonRecord> records = mapper.selectMany(selectStatement);
117
118 assertThat(selectStatement.getSelectStatement()).isEqualTo(expected);
119 assertThat(records).hasSize(6);
120 assertThat(records.get(0).number1()).isEqualTo(6);
121 assertThat(records.get(5).number1()).isEqualTo(11);
122 }
123
124 @Test
125 void testColumnComparisonEqual() {
126 SelectStatementProvider selectStatement = select(number1, number2)
127 .from(columnComparison)
128 .where(number1, isEqualTo(number2))
129 .orderBy(number1, number2)
130 .build()
131 .render(RenderingStrategies.MYBATIS3);
132
133 String expected = "select number1, number2 "
134 + "from ColumnComparison "
135 + "where number1 = number2 "
136 + "order by number1, number2";
137
138 List<ColumnComparisonRecord> records = mapper.selectMany(selectStatement);
139
140 assertThat(selectStatement.getSelectStatement()).isEqualTo(expected);
141 assertThat(records).hasSize(1);
142 assertThat(records.get(0).number1()).isEqualTo(6);
143 }
144
145 @Test
146 void testColumnComparisonNotEqual() {
147 SelectStatementProvider selectStatement = select(number1, number2)
148 .from(columnComparison)
149 .where(number1, isNotEqualTo(number2))
150 .orderBy(number1, number2)
151 .build()
152 .render(RenderingStrategies.MYBATIS3);
153
154 String expected = "select number1, number2 "
155 + "from ColumnComparison "
156 + "where number1 <> number2 "
157 + "order by number1, number2";
158
159 List<ColumnComparisonRecord> records = mapper.selectMany(selectStatement);
160
161 assertThat(selectStatement.getSelectStatement()).isEqualTo(expected);
162 assertThat(records).hasSize(10);
163 assertThat(records.get(0).number1()).isEqualTo(1);
164 assertThat(records.get(9).number1()).isEqualTo(11);
165 }
166
167 @Test
168 void testHelperMethod() {
169 List<ColumnComparisonRecord> records = mapper.select(d ->
170 d.where(number1, isNotEqualTo(number2))
171 .orderBy(number1, number2)
172 );
173
174 assertThat(records).hasSize(10);
175 assertThat(records.get(0).number1()).isEqualTo(1);
176 assertThat(records.get(9).number1()).isEqualTo(11);
177 }
178 }