1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/*** IMPORT ------------------------------------------- ***/
import { assertEquals } from "jsr:@std/assert@^1.0.0";
/*** UTILITY ------------------------------------------ ***/
import { deriveTitle, parseOperations } from "../source/library/graphql/operations.ts";
/*** TESTS -------------------------------------------- ***/
Deno.test("parseOperations returns empty for blank query", () => {
assertEquals(parseOperations(""), []);
assertEquals(parseOperations(" "), []);
});
Deno.test("parseOperations returns empty on syntax error", () => {
assertEquals(parseOperations("query { ..."), []);
});
Deno.test("parseOperations captures a single named query", () => {
const ops = parseOperations("query Foo { viewer { id } }");
assertEquals(ops, [{ name: "Foo", type: "query" }]);
});
Deno.test("parseOperations returns null name for anonymous ops", () => {
const ops = parseOperations("{ viewer { id } }");
assertEquals(ops, [{ name: null, type: "query" }]);
});
Deno.test("parseOperations captures multiple operations", () => {
const ops = parseOperations(`
query Foo { a }
mutation Bar { b }
subscription Baz { c }
`);
assertEquals(ops, [
{ name: "Foo", type: "query" },
{ name: "Bar", type: "mutation" },
{ name: "Baz", type: "subscription" }
]);
});
Deno.test("deriveTitle prefers the first operation name", () => {
const ops = parseOperations("query Foo { a }");
assertEquals(deriveTitle("query Foo { a }", ops), "Foo");
});
Deno.test("deriveTitle falls back to operation type", () => {
const ops = parseOperations("mutation { a }");
assertEquals(deriveTitle("mutation { a }", ops), "mutation");
});
Deno.test("deriveTitle falls back to the first 20 chars when unparsable", () => {
const query = "this is not valid graphql at all";
assertEquals(deriveTitle(query, parseOperations(query)), "this is not valid gr");
});
Deno.test("deriveTitle returns 'untitled' for empty input", () => {
assertEquals(deriveTitle("", []), "untitled");
assertEquals(deriveTitle(" ", []), "untitled");
});
|