Skip to content

Commit 3b148d7

Browse files
committed
refactor: better test file
1 parent 4babce7 commit 3b148d7

1 file changed

Lines changed: 59 additions & 65 deletions

File tree

test/typings/test-d/sqlite-json.test-d.ts

Lines changed: 59 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,119 @@
11
import { expectError, expectType } from 'tsd'
2-
import type { Kysely, RawBuilder } from '..'
2+
import type { Kysely } from '..'
3+
import type { Database as SharedDatabase } from '../shared'
34
import {
45
jsonArrayFrom,
56
jsonBuildObject,
67
jsonObjectFrom,
78
} from '../../../helpers/sqlite'
89
import { sql } from '../../..'
910

10-
interface Database {
11-
person: {
11+
interface Database extends SharedDatabase {
12+
blob_test: {
1213
id: number
1314
name: string
1415
data: Buffer
1516
nullable_data: Buffer | null
1617
}
17-
pet: {
18-
id: number
19-
name: string
20-
owner_id: number
21-
}
2218
}
2319

2420
// jsonArrayFrom should error when selecting Buffer columns
25-
async function testJsonArrayFromWithBuffer(db: Kysely<Database>) {
21+
function testJsonArrayFromWithBuffer(db: Kysely<Database>) {
2622
expectError(
2723
db
28-
.selectFrom('person')
24+
.selectFrom('blob_test')
2925
.select((eb) => [
3026
'id',
31-
jsonArrayFrom(eb.selectFrom('person').select(['id', 'data'])).as(
32-
'people',
27+
jsonArrayFrom(eb.selectFrom('blob_test').select(['id', 'data'])).as(
28+
'rows',
3329
),
3430
]),
3531
)
3632
}
3733

3834
// jsonArrayFrom should error when selecting Buffer | null columns
39-
async function testJsonArrayFromWithNullableBuffer(db: Kysely<Database>) {
35+
function testJsonArrayFromWithNullableBuffer(db: Kysely<Database>) {
4036
expectError(
4137
db
42-
.selectFrom('person')
38+
.selectFrom('blob_test')
4339
.select((eb) => [
4440
'id',
4541
jsonArrayFrom(
46-
eb.selectFrom('person').select(['id', 'nullable_data']),
47-
).as('people'),
42+
eb.selectFrom('blob_test').select(['id', 'nullable_data']),
43+
).as('rows'),
4844
]),
4945
)
5046
}
5147

5248
// jsonArrayFrom should succeed when no Buffer columns are used
5349
async function testJsonArrayFromWithoutBuffer(db: Kysely<Database>) {
5450
const result = await db
55-
.selectFrom('person')
51+
.selectFrom('blob_test')
5652
.select((eb) => [
5753
'id',
5854
jsonArrayFrom(
5955
eb
60-
.selectFrom('pet')
61-
.select(['pet.id', 'pet.name'])
62-
.whereRef('pet.owner_id', '=', 'person.id'),
63-
).as('pets'),
56+
.selectFrom('blob_test')
57+
.select(['blob_test.id', 'blob_test.name'])
58+
.where('blob_test.id', '>', 0),
59+
).as('rows'),
6460
])
6561
.execute()
6662

67-
expectType<{ id: number; pets: { id: number; name: string }[] }[]>(result)
63+
expectType<{ id: number; rows: { id: number; name: string }[] }[]>(result)
6864
}
6965

7066
// jsonObjectFrom should error when selecting Buffer columns
71-
async function testJsonObjectFromWithBuffer(db: Kysely<Database>) {
67+
function testJsonObjectFromWithBuffer(db: Kysely<Database>) {
7268
expectError(
7369
db
74-
.selectFrom('person')
70+
.selectFrom('blob_test')
7571
.select((eb) => [
7672
'id',
7773
jsonObjectFrom(
78-
eb.selectFrom('person').select(['id', 'data']).limit(1),
79-
).as('person_data'),
74+
eb.selectFrom('blob_test').select(['id', 'data']).limit(1),
75+
).as('row'),
8076
]),
8177
)
8278
}
8379

8480
// jsonObjectFrom should error when selecting Buffer | null columns
85-
async function testJsonObjectFromWithNullableBuffer(db: Kysely<Database>) {
81+
function testJsonObjectFromWithNullableBuffer(db: Kysely<Database>) {
8682
expectError(
8783
db
88-
.selectFrom('person')
84+
.selectFrom('blob_test')
8985
.select((eb) => [
9086
'id',
9187
jsonObjectFrom(
92-
eb.selectFrom('person').select(['id', 'nullable_data']).limit(1),
93-
).as('person_data'),
88+
eb.selectFrom('blob_test').select(['id', 'nullable_data']).limit(1),
89+
).as('row'),
9490
]),
9591
)
9692
}
9793

9894
// jsonObjectFrom should succeed when no Buffer columns are used
9995
async function testJsonObjectFromWithoutBuffer(db: Kysely<Database>) {
10096
const result = await db
101-
.selectFrom('person')
97+
.selectFrom('blob_test')
10298
.select((eb) => [
10399
'id',
104100
jsonObjectFrom(
105101
eb
106-
.selectFrom('pet')
107-
.select(['pet.id', 'pet.name'])
108-
.whereRef('pet.owner_id', '=', 'person.id')
102+
.selectFrom('blob_test')
103+
.select(['blob_test.id', 'blob_test.name'])
104+
.where('blob_test.id', '>', 0)
109105
.limit(1),
110-
).as('pet'),
106+
).as('row'),
111107
])
112108
.execute()
113109

114-
expectType<{ id: number; pet: { id: number; name: string } | null }[]>(result)
110+
expectType<{ id: number; row: { id: number; name: string } | null }[]>(result)
115111
}
116112

117113
// jsonBuildObject should error when passing Expression<Buffer>
118-
async function testJsonBuildObjectWithBuffer(db: Kysely<Database>) {
114+
function testJsonBuildObjectWithBuffer(db: Kysely<Database>) {
119115
expectError(
120-
db.selectFrom('person').select((eb) => [
116+
db.selectFrom('blob_test').select((eb) => [
121117
'id',
122118
jsonBuildObject({
123119
name: eb.ref('name'),
@@ -128,9 +124,9 @@ async function testJsonBuildObjectWithBuffer(db: Kysely<Database>) {
128124
}
129125

130126
// jsonBuildObject should error when passing Expression<Buffer | null>
131-
async function testJsonBuildObjectWithNullableBuffer(db: Kysely<Database>) {
127+
function testJsonBuildObjectWithNullableBuffer(db: Kysely<Database>) {
132128
expectError(
133-
db.selectFrom('person').select((eb) => [
129+
db.selectFrom('blob_test').select((eb) => [
134130
'id',
135131
jsonBuildObject({
136132
name: eb.ref('name'),
@@ -143,7 +139,7 @@ async function testJsonBuildObjectWithNullableBuffer(db: Kysely<Database>) {
143139
// jsonBuildObject should succeed when no Buffer values are used
144140
async function testJsonBuildObjectWithoutBuffer(db: Kysely<Database>) {
145141
const result = await db
146-
.selectFrom('person')
142+
.selectFrom('blob_test')
147143
.select((eb) => [
148144
'id',
149145
jsonBuildObject({
@@ -159,85 +155,83 @@ async function testJsonBuildObjectWithoutBuffer(db: Kysely<Database>) {
159155
// jsonArrayFrom should succeed when Buffer is cast using sql`hex()` (workaround)
160156
async function testJsonArrayFromWithHexWorkaround(db: Kysely<Database>) {
161157
const result = await db
162-
.selectFrom('person')
158+
.selectFrom('blob_test')
163159
.select((eb) => [
164160
'id',
165161
jsonArrayFrom(
166162
eb
167-
.selectFrom('person')
163+
.selectFrom('blob_test')
168164
.select(['id', sql<string>`hex(data)`.as('data_hex')]),
169-
).as('people'),
165+
).as('rows'),
170166
])
171167
.execute()
172168

173-
expectType<{ id: number; people: { id: number; data_hex: string }[] }[]>(
174-
result,
175-
)
169+
expectType<{ id: number; rows: { id: number; data_hex: string }[] }[]>(result)
176170
}
177171

178172
// jsonArrayFrom should succeed when Buffer is cast using eb.cast<string>() (workaround)
179173
async function testJsonArrayFromWithCastWorkaround(db: Kysely<Database>) {
180174
const result = await db
181-
.selectFrom('person')
175+
.selectFrom('blob_test')
182176
.select((eb) => [
183177
'id',
184178
jsonArrayFrom(
185179
eb
186-
.selectFrom('person')
180+
.selectFrom('blob_test')
187181
.select(['id', eb.cast<string>('data', 'text').as('data_text')]),
188-
).as('people'),
182+
).as('rows'),
189183
])
190184
.execute()
191185

192-
expectType<{ id: number; people: { id: number; data_text: string }[] }[]>(
186+
expectType<{ id: number; rows: { id: number; data_text: string }[] }[]>(
193187
result,
194188
)
195189
}
196190

197191
// jsonObjectFrom should succeed when Buffer is cast using sql`hex()` (workaround)
198192
async function testJsonObjectFromWithHexWorkaround(db: Kysely<Database>) {
199193
const result = await db
200-
.selectFrom('person')
194+
.selectFrom('blob_test')
201195
.select((eb) => [
202196
'id',
203197
jsonObjectFrom(
204198
eb
205-
.selectFrom('person')
199+
.selectFrom('blob_test')
206200
.select(['id', sql<string>`hex(data)`.as('data_hex')])
207201
.limit(1),
208-
).as('person_data'),
202+
).as('row'),
209203
])
210204
.execute()
211205

212-
expectType<
213-
{ id: number; person_data: { id: number; data_hex: string } | null }[]
214-
>(result)
206+
expectType<{ id: number; row: { id: number; data_hex: string } | null }[]>(
207+
result,
208+
)
215209
}
216210

217211
// jsonObjectFrom should succeed when Buffer is cast using eb.cast<string>() (workaround)
218212
async function testJsonObjectFromWithCastWorkaround(db: Kysely<Database>) {
219213
const result = await db
220-
.selectFrom('person')
214+
.selectFrom('blob_test')
221215
.select((eb) => [
222216
'id',
223217
jsonObjectFrom(
224218
eb
225-
.selectFrom('person')
219+
.selectFrom('blob_test')
226220
.select(['id', eb.cast<string>('data', 'text').as('data_text')])
227221
.limit(1),
228-
).as('person_data'),
222+
).as('row'),
229223
])
230224
.execute()
231225

232-
expectType<
233-
{ id: number; person_data: { id: number; data_text: string } | null }[]
234-
>(result)
226+
expectType<{ id: number; row: { id: number; data_text: string } | null }[]>(
227+
result,
228+
)
235229
}
236230

237231
// jsonBuildObject should succeed when Buffer is cast using sql`hex()` (workaround)
238232
async function testJsonBuildObjectWithHexWorkaround(db: Kysely<Database>) {
239233
const result = await db
240-
.selectFrom('person')
234+
.selectFrom('blob_test')
241235
.select((eb) => [
242236
'id',
243237
jsonBuildObject({
@@ -253,7 +247,7 @@ async function testJsonBuildObjectWithHexWorkaround(db: Kysely<Database>) {
253247
// jsonBuildObject should succeed when Buffer is cast using eb.cast<string>() (workaround)
254248
async function testJsonBuildObjectWithCastWorkaround(db: Kysely<Database>) {
255249
const result = await db
256-
.selectFrom('person')
250+
.selectFrom('blob_test')
257251
.select((eb) => [
258252
'id',
259253
jsonBuildObject({

0 commit comments

Comments
 (0)