26 lines
730 B
TypeScript
26 lines
730 B
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { parseDuckDbQuery } from "../../src/core/duckdb";
|
|
|
|
describe("DuckDB query boundary", () => {
|
|
it("records a single SELECT token stream", () => {
|
|
expect(
|
|
parseDuckDbQuery("SELECT team, avg(score) FROM data GROUP BY team"),
|
|
).toMatchObject({
|
|
type: "duckdb-query",
|
|
statement: "SELECT",
|
|
tokens: expect.arrayContaining([
|
|
{ kind: "word", value: "data", offset: 29 },
|
|
]),
|
|
});
|
|
});
|
|
|
|
it.each([
|
|
"INSTALL httpfs",
|
|
"SELECT * FROM data; DROP TABLE data",
|
|
"COPY data TO 'x.csv'",
|
|
"PRAGMA version",
|
|
])("rejects non-read-only statement %s", (source) => {
|
|
expect(() => parseDuckDbQuery(source)).toThrow();
|
|
});
|
|
});
|