Skip to content

Commit ceffff6

Browse files
committed
test: add case for interface Row type, and parseJson: false
1 parent c061993 commit ceffff6

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

test/test.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,33 @@ Deno.test("sqlite", async (t) => {
182182
}
183183
});
184184

185+
await t.step("query object (interface type)", () => {
186+
interface Row {
187+
integer: number;
188+
text: string;
189+
double: number;
190+
blob: Uint8Array;
191+
nullable: null;
192+
}
193+
194+
const rows = db.prepare(
195+
"select * from test where integer != ? and text != ?",
196+
)
197+
.all<Row>(
198+
1,
199+
"hello world",
200+
);
201+
202+
assertEquals(rows.length, 9);
203+
for (const row of rows) {
204+
assertEquals(typeof row.integer, "number");
205+
assertEquals(row.text, `hello ${row.integer}`);
206+
assertEquals(row.double, 3.14);
207+
assertEquals(row.blob, new Uint8Array([3, 2, 1]));
208+
assertEquals(row.nullable, null);
209+
}
210+
});
211+
185212
await t.step("query json", () => {
186213
const row = db
187214
.prepare(
@@ -194,6 +221,22 @@ Deno.test("sqlite", async (t) => {
194221
assertEquals(row[2], '{"no_subtype": true}');
195222
});
196223

224+
await t.step("query json (parseJson: false)", () => {
225+
db.parseJson = false;
226+
227+
const row = db
228+
.prepare(
229+
"select json('[1,2,3]'), json_object('name', 'alex'), '{\"no_subtype\": true}'",
230+
)
231+
.values<[string, string, string]>()[0];
232+
233+
db.parseJson = true;
234+
235+
assertEquals(row[0], "[1,2,3]");
236+
assertEquals(row[1], '{"name":"alex"}');
237+
assertEquals(row[2], '{"no_subtype": true}');
238+
});
239+
197240
await t.step("query with string param", () => {
198241
const row = db.prepare(
199242
"select * from test where text = ?",

0 commit comments

Comments
 (0)