Skip to content

Commit 1791e85

Browse files
committed
Group tests for different FUNCTION/PROCEDURE languages
1 parent 9d708ad commit 1791e85

2 files changed

Lines changed: 271 additions & 263 deletions

File tree

test/ddl/function.test.ts

Lines changed: 163 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -128,174 +128,178 @@ describe("function", () => {
128128
`);
129129
});
130130

131-
it(`formats JavaScript FUNCTION`, async () => {
132-
await testBigquery(dedent`
133-
CREATE FUNCTION gen_random()
134-
RETURNS FLOAT64
135-
NOT DETERMINISTIC
136-
LANGUAGE js
137-
AS r'''
138-
return Math.random();
139-
'''
140-
`);
141-
});
131+
describe("LANGUAGE js", () => {
132+
it(`formats JavaScript FUNCTION`, async () => {
133+
await testBigquery(dedent`
134+
CREATE FUNCTION gen_random()
135+
RETURNS FLOAT64
136+
NOT DETERMINISTIC
137+
LANGUAGE js
138+
AS r'''
139+
return Math.random();
140+
'''
141+
`);
142+
});
142143

143-
it(`reformats JavaScript in JS function`, async () => {
144-
expect(
145-
await pretty(
146-
dedent`
147-
CREATE FUNCTION gen_random()
148-
RETURNS FLOAT64
149-
LANGUAGE js
150-
AS ' if(true) {return Math.random () *2}'
151-
`,
152-
{ dialect: "bigquery" },
153-
),
154-
).toBe(dedent`
155-
CREATE FUNCTION gen_random()
156-
RETURNS FLOAT64
157-
LANGUAGE js
158-
AS r'''
159-
if (true) {
160-
return Math.random() * 2;
161-
}
162-
'''
163-
`);
164-
});
144+
it(`reformats JavaScript in JS function`, async () => {
145+
expect(
146+
await pretty(
147+
dedent`
148+
CREATE FUNCTION gen_random()
149+
RETURNS FLOAT64
150+
LANGUAGE js
151+
AS ' if(true) {return Math.random () *2}'
152+
`,
153+
{ dialect: "bigquery" },
154+
),
155+
).toBe(dedent`
156+
CREATE FUNCTION gen_random()
157+
RETURNS FLOAT64
158+
LANGUAGE js
159+
AS r'''
160+
if (true) {
161+
return Math.random() * 2;
162+
}
163+
'''
164+
`);
165+
});
165166

166-
it(`quotes JavaScript in double-quotes when single-quotes can't be used`, async () => {
167-
expect(
168-
await pretty(
169-
dedent`
170-
CREATE FUNCTION contains_quotes(x STRING)
171-
RETURNS FLOAT64
172-
LANGUAGE js
173-
AS " return /'''/.test(x) "
174-
`,
175-
{ dialect: "bigquery" },
176-
),
177-
).toBe(dedent`
178-
CREATE FUNCTION contains_quotes(x STRING)
179-
RETURNS FLOAT64
180-
LANGUAGE js
181-
AS r"""
182-
return /'''/.test(x);
183-
"""
184-
`);
185-
});
167+
it(`quotes JavaScript in double-quotes when single-quotes can't be used`, async () => {
168+
expect(
169+
await pretty(
170+
dedent`
171+
CREATE FUNCTION contains_quotes(x STRING)
172+
RETURNS FLOAT64
173+
LANGUAGE js
174+
AS " return /'''/.test(x) "
175+
`,
176+
{ dialect: "bigquery" },
177+
),
178+
).toBe(dedent`
179+
CREATE FUNCTION contains_quotes(x STRING)
180+
RETURNS FLOAT64
181+
LANGUAGE js
182+
AS r"""
183+
return /'''/.test(x);
184+
"""
185+
`);
186+
});
186187

187-
it(`does not reformat JavaScript when neither ''' or """ can be easily used for quoting`, async () => {
188-
expect(
189-
await pretty(
190-
dedent`
191-
CREATE FUNCTION contains_quotes(x STRING)
192-
RETURNS FLOAT64
193-
LANGUAGE js
194-
AS " return /'''|\\"\\"\\"/.test(x) "
195-
`,
196-
{ dialect: "bigquery" },
197-
),
198-
).toBe(dedent`
199-
CREATE FUNCTION contains_quotes(x STRING)
200-
RETURNS FLOAT64
201-
LANGUAGE js
202-
AS " return /'''|\\"\\"\\"/.test(x) "
203-
`);
188+
it(`does not reformat JavaScript when neither ''' or """ can be easily used for quoting`, async () => {
189+
expect(
190+
await pretty(
191+
dedent`
192+
CREATE FUNCTION contains_quotes(x STRING)
193+
RETURNS FLOAT64
194+
LANGUAGE js
195+
AS " return /'''|\\"\\"\\"/.test(x) "
196+
`,
197+
{ dialect: "bigquery" },
198+
),
199+
).toBe(dedent`
200+
CREATE FUNCTION contains_quotes(x STRING)
201+
RETURNS FLOAT64
202+
LANGUAGE js
203+
AS " return /'''|\\"\\"\\"/.test(x) "
204+
`);
205+
});
204206
});
205207

206-
it(`formats dollar-quoted SQL function`, async () => {
207-
await testPostgresql(dedent`
208-
CREATE FUNCTION my_func()
209-
RETURNS INT64
210-
LANGUAGE sql
211-
AS $$
212-
SELECT 1;
213-
$$
214-
`);
215-
});
208+
describe("LANGUAGE sql", () => {
209+
it(`formats dollar-quoted SQL function`, async () => {
210+
await testPostgresql(dedent`
211+
CREATE FUNCTION my_func()
212+
RETURNS INT64
213+
LANGUAGE sql
214+
AS $$
215+
SELECT 1;
216+
$$
217+
`);
218+
});
216219

217-
it(`reformats SQL in dollar-quoted SQL function`, async () => {
218-
expect(
219-
await pretty(
220-
dedent`
221-
CREATE FUNCTION my_func()
222-
RETURNS INT64
223-
LANGUAGE sql
224-
AS $body$SELECT 1;
225-
select 2$body$
226-
`,
227-
{ dialect: "postgresql" },
228-
),
229-
).toBe(dedent`
230-
CREATE FUNCTION my_func()
231-
RETURNS INT64
232-
LANGUAGE sql
233-
AS $body$
234-
SELECT 1;
235-
SELECT 2;
236-
$body$
237-
`);
238-
});
220+
it(`reformats SQL in dollar-quoted SQL function`, async () => {
221+
expect(
222+
await pretty(
223+
dedent`
224+
CREATE FUNCTION my_func()
225+
RETURNS INT64
226+
LANGUAGE sql
227+
AS $body$SELECT 1;
228+
select 2$body$
229+
`,
230+
{ dialect: "postgresql" },
231+
),
232+
).toBe(dedent`
233+
CREATE FUNCTION my_func()
234+
RETURNS INT64
235+
LANGUAGE sql
236+
AS $body$
237+
SELECT 1;
238+
SELECT 2;
239+
$body$
240+
`);
241+
});
239242

240-
it(`converts single-quoted SQL functions to dollar-quoted SQL functions`, async () => {
241-
expect(
242-
await pretty(
243-
dedent`
244-
CREATE FUNCTION my_func()
245-
RETURNS TEXT
246-
LANGUAGE sql
247-
AS 'SELECT ''foo'''
248-
`,
249-
{ dialect: "postgresql" },
250-
),
251-
).toBe(dedent`
252-
CREATE FUNCTION my_func()
253-
RETURNS TEXT
254-
LANGUAGE sql
255-
AS $$
256-
SELECT 'foo';
257-
$$
258-
`);
259-
});
243+
it(`converts single-quoted SQL functions to dollar-quoted SQL functions`, async () => {
244+
expect(
245+
await pretty(
246+
dedent`
247+
CREATE FUNCTION my_func()
248+
RETURNS TEXT
249+
LANGUAGE sql
250+
AS 'SELECT ''foo'''
251+
`,
252+
{ dialect: "postgresql" },
253+
),
254+
).toBe(dedent`
255+
CREATE FUNCTION my_func()
256+
RETURNS TEXT
257+
LANGUAGE sql
258+
AS $$
259+
SELECT 'foo';
260+
$$
261+
`);
262+
});
260263

261-
it(`does not convert single-quoted SQL functions to dollar-quoted SQL functions when they contain dollar-quoted strings`, async () => {
262-
expect(
263-
await pretty(
264-
dedent`
265-
CREATE FUNCTION my_func()
266-
RETURNS TEXT
267-
LANGUAGE sql
268-
AS 'SELECT $$foo$$'
269-
`,
270-
{ dialect: "postgresql" },
271-
),
272-
).toBe(dedent`
273-
CREATE FUNCTION my_func()
274-
RETURNS TEXT
275-
LANGUAGE sql
276-
AS 'SELECT $$foo$$'
277-
`);
278-
});
264+
it(`does not convert single-quoted SQL functions to dollar-quoted SQL functions when they contain dollar-quoted strings`, async () => {
265+
expect(
266+
await pretty(
267+
dedent`
268+
CREATE FUNCTION my_func()
269+
RETURNS TEXT
270+
LANGUAGE sql
271+
AS 'SELECT $$foo$$'
272+
`,
273+
{ dialect: "postgresql" },
274+
),
275+
).toBe(dedent`
276+
CREATE FUNCTION my_func()
277+
RETURNS TEXT
278+
LANGUAGE sql
279+
AS 'SELECT $$foo$$'
280+
`);
281+
});
279282

280-
it(`handles SQL language identifier case-insensitively`, async () => {
281-
expect(
282-
await pretty(
283-
dedent`
284-
CREATE FUNCTION my_func()
285-
RETURNS INT64
286-
LANGUAGE Sql
287-
AS 'SELECT 1'
288-
`,
289-
{ dialect: "postgresql" },
290-
),
291-
).toBe(dedent`
292-
CREATE FUNCTION my_func()
293-
RETURNS INT64
294-
LANGUAGE Sql
295-
AS $$
296-
SELECT 1;
297-
$$
298-
`);
283+
it(`handles SQL language identifier case-insensitively`, async () => {
284+
expect(
285+
await pretty(
286+
dedent`
287+
CREATE FUNCTION my_func()
288+
RETURNS INT64
289+
LANGUAGE Sql
290+
AS 'SELECT 1'
291+
`,
292+
{ dialect: "postgresql" },
293+
),
294+
).toBe(dedent`
295+
CREATE FUNCTION my_func()
296+
RETURNS INT64
297+
LANGUAGE Sql
298+
AS $$
299+
SELECT 1;
300+
$$
301+
`);
302+
});
299303
});
300304
});
301305

0 commit comments

Comments
 (0)