@@ -69,6 +69,31 @@ class SelectDslTest : WithAssertions {
6969 assertThat(actual).isEqualTo(expected)
7070 }
7171
72+ @Test
73+ fun `select() with a KClass` () {
74+ // when
75+ val select = queryPart {
76+ select(
77+ BigDecimal ::class ,
78+ expression1,
79+ ).from(
80+ entity1,
81+ )
82+ }.toQuery()
83+
84+ val actual: SelectQuery <BigDecimal > = select // for type check
85+
86+ // then
87+ val expected = SelectQueries .selectQuery(
88+ returnType = BigDecimal ::class ,
89+ distinct = false ,
90+ select = listOf (expression1),
91+ from = listOf (entity1),
92+ )
93+
94+ assertThat(actual).isEqualTo(expected)
95+ }
96+
7297 @Test
7398 fun `selectDistinct() with an expression` () {
7499 // when
@@ -118,6 +143,31 @@ class SelectDslTest : WithAssertions {
118143 assertThat(actual).isEqualTo(expected)
119144 }
120145
146+ @Test
147+ fun `selectDistinct() with a KClass` () {
148+ // when
149+ val select = queryPart {
150+ selectDistinct(
151+ BigDecimal ::class ,
152+ expression1,
153+ ).from(
154+ entity1,
155+ )
156+ }.toQuery()
157+
158+ val actual: SelectQuery <BigDecimal > = select // for type check
159+
160+ // then
161+ val expected = SelectQueries .selectQuery(
162+ returnType = BigDecimal ::class ,
163+ distinct = true ,
164+ select = listOf (expression1),
165+ from = listOf (entity1),
166+ )
167+
168+ assertThat(actual).isEqualTo(expected)
169+ }
170+
121171 @Test
122172 fun `selectNew() with a generic type and expressions` () {
123173 // when
@@ -148,6 +198,37 @@ class SelectDslTest : WithAssertions {
148198 assertThat(actual).isEqualTo(expected)
149199 }
150200
201+ @Test
202+ fun `selectNew() with a KClass` () {
203+ // when
204+ val select = queryPart {
205+ selectNew(
206+ Dto ::class ,
207+ expression1,
208+ expression2,
209+ ).from(
210+ entity1,
211+ )
212+ }.toQuery()
213+
214+ val actual: SelectQuery <Dto > = select // for type check
215+
216+ // then
217+ val expected = SelectQueries .selectQuery(
218+ returnType = Dto ::class ,
219+ distinct = false ,
220+ select = listOf (
221+ Expressions .new(
222+ type = Dto ::class ,
223+ args = listOf (expression1, expression2),
224+ ),
225+ ),
226+ from = listOf (entity1),
227+ )
228+
229+ assertThat(actual).isEqualTo(expected)
230+ }
231+
151232 @Test
152233 fun `selectDistinctNew() with a generic type and expressions` () {
153234 // when
@@ -177,4 +258,35 @@ class SelectDslTest : WithAssertions {
177258
178259 assertThat(actual).isEqualTo(expected)
179260 }
261+
262+ @Test
263+ fun `selectDistinctNew() with a KClass` () {
264+ // when
265+ val select = queryPart {
266+ selectDistinctNew(
267+ Dto ::class ,
268+ expression1,
269+ expression2,
270+ ).from(
271+ entity1,
272+ )
273+ }.toQuery()
274+
275+ val actual: SelectQuery <Dto > = select // for type check
276+
277+ // then
278+ val expected = SelectQueries .selectQuery(
279+ returnType = Dto ::class ,
280+ distinct = true ,
281+ select = listOf (
282+ Expressions .new(
283+ type = Dto ::class ,
284+ args = listOf (expression1, expression2),
285+ ),
286+ ),
287+ from = listOf (entity1),
288+ )
289+
290+ assertThat(actual).isEqualTo(expected)
291+ }
180292}
0 commit comments