馃寠 A GraphQL implementation in Gleam
1/// Snapshot tests for subscription parsing
2import birdie
3import gleam/string
4import gleeunit
5import swell/parser
6
7pub fn main() {
8 gleeunit.main()
9}
10
11// Helper to format AST as string for snapshots
12fn format_ast(doc: parser.Document) -> String {
13 string.inspect(doc)
14}
15
16pub fn parse_simple_anonymous_subscription_test() {
17 let query = "subscription { messageAdded { content author } }"
18
19 let doc = case parser.parse(query) {
20 Ok(d) -> d
21 Error(_) -> panic as "Parse failed"
22 }
23
24 birdie.snap(title: "Simple anonymous subscription", content: format_ast(doc))
25}
26
27pub fn parse_named_subscription_test() {
28 let query = "subscription OnMessage { messageAdded { id content } }"
29
30 let doc = case parser.parse(query) {
31 Ok(d) -> d
32 Error(_) -> panic as "Parse failed"
33 }
34
35 birdie.snap(title: "Named subscription", content: format_ast(doc))
36}
37
38pub fn parse_subscription_with_nested_selections_test() {
39 let query =
40 "
41 subscription {
42 postCreated {
43 id
44 title
45 author {
46 id
47 name
48 email
49 }
50 comments {
51 content
52 }
53 }
54 }
55 "
56
57 let doc = case parser.parse(query) {
58 Ok(d) -> d
59 Error(_) -> panic as "Parse failed"
60 }
61
62 birdie.snap(
63 title: "Subscription with nested selections",
64 content: format_ast(doc),
65 )
66}