@clickup/ent-framework
Version:
A PostgreSQL graph-database-alike library with microsharding and row-level security
114 lines (105 loc) • 2.82 kB
text/typescript
import { RAW_PREPEND_HINT, buildHintQueries } from "../buildHintQueries";
test("no hints", () => {
expect(buildHintQueries({}, {})).toEqual(["", [], []]);
expect(buildHintQueries(undefined, undefined)).toEqual(["", [], []]);
});
test("no user hints", () => {
expect(
buildHintQueries(
{ statement_timeout: "10000", transaction: "read only" },
{},
),
).toEqual([
"",
["SET LOCAL statement_timeout TO 10000", "SET LOCAL transaction read only"],
[],
]);
});
test("user overrides a hint", () => {
expect(
buildHintQueries(
{ statement_timeout: "10000", transaction: "read only" },
{ statement_timeout: "42" },
),
).toEqual([
"",
["SET LOCAL transaction read only"],
["SET LOCAL statement_timeout TO 42"],
]);
});
test("user resets a hint", () => {
expect(
buildHintQueries(
{ statement_timeout: "10000", transaction: "read only" },
{ transaction: null },
),
).toEqual(["", ["SET LOCAL statement_timeout TO 10000"], []]);
});
test('user passes undefined aka "no key mentioned"', () => {
expect(
buildHintQueries(
{ statement_timeout: "10000", transaction: "read only" },
{ transaction: undefined },
),
).toEqual([
"",
["SET LOCAL statement_timeout TO 10000", "SET LOCAL transaction read only"],
[],
]);
});
test("raw prepend hint", () => {
expect(
buildHintQueries(undefined, {
statement_timeout: "42",
[RAW_PREPEND_HINT]: "/*+IndexScan(my_table)*/",
}),
).toEqual([
"/*+IndexScan(my_table)*/",
[],
["SET LOCAL statement_timeout TO 42"],
]);
});
test('default passes undefined aka "no key mentioned"', () => {
expect(buildHintQueries({ statement_timeout: undefined }, {})).toEqual([
"",
[],
[],
]);
expect(
buildHintQueries(
{ statement_timeout: undefined },
{ statement_timeout: null },
),
).toEqual(["", [], []]);
expect(
buildHintQueries(
{ statement_timeout: undefined },
{ statement_timeout: undefined },
),
).toEqual(["", [], []]);
expect(
buildHintQueries(
{ statement_timeout: undefined },
{ statement_timeout: "42" },
),
).toEqual(["", [], ["SET LOCAL statement_timeout TO 42"]]);
});
test("default resets a hint", () => {
expect(buildHintQueries({ statement_timeout: null }, {})).toEqual([
"",
[],
[],
]);
expect(
buildHintQueries({ statement_timeout: null }, { statement_timeout: null }),
).toEqual(["", [], []]);
expect(
buildHintQueries(
{ statement_timeout: null },
{ statement_timeout: undefined },
),
).toEqual(["", [], []]);
expect(
buildHintQueries({ statement_timeout: null }, { statement_timeout: "42" }),
).toEqual(["", [], ["SET LOCAL statement_timeout TO 42"]]);
});