Skip to content

Commit 5889a45

Browse files
committed
updates for tests
1 parent d932a99 commit 5889a45

File tree

11 files changed

+387
-161
lines changed

11 files changed

+387
-161
lines changed

__fixtures__/generated/generated.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,19 @@
11
{
2+
"pretty/selects-1.sql": "SELECT 1",
3+
"pretty/selects-2.sql": "SELECT 'abc'::text",
4+
"pretty/selects-3.sql": "SELECT now() AT TIME ZONE 'UTC'",
5+
"pretty/selects-4.sql": "SELECT\n 1,\n 2",
6+
"pretty/selects-5.sql": "SELECT\n id,\n name,\n email\nFROM users",
7+
"pretty/selects-6.sql": "SELECT DISTINCT id FROM users",
8+
"pretty/selects-7.sql": "SELECT DISTINCT\n id,\n name\nFROM users",
9+
"pretty/selects-8.sql": "SELECT\n id,\n upper(name) AS name_upper,\n created_at + interval '1 day' AS expires_at\nFROM accounts",
10+
"pretty/selects-9.sql": "SELECT (SELECT max(score) FROM results)",
11+
"pretty/selects-10.sql": "SELECT\n count(*) OVER (),\n u.id\nFROM users u",
12+
"pretty/selects-11.sql": "SELECT\n name\nFROM customers\nUNION\nALL\nSELECT\n name\nFROM suppliers\nORDER BY\n name",
13+
"pretty/selects-12.sql": "SELECT\n u.id,\n u.name,\n u.email,\n p.title\nFROM users AS u\nJOIN profiles AS p ON u.id = p.user_id\nLEFT JOIN orders AS o ON u.id = o.user_id\nRIGHT JOIN addresses AS a ON u.id = a.user_id\nWHERE\n u.active = true",
14+
"pretty/selects-13.sql": "SELECT\n id,\n name\nFROM users\nWHERE\n id IN (SELECT\n user_id\nFROM orders\nWHERE\n total > 100)",
15+
"pretty/selects-14.sql": "SELECT\n id,\n name,\n email\nFROM users\nWHERE\n active = true",
16+
"pretty/selects-15.sql": "SELECT\n u.id,\n u.name,\n u.email,\n p.title\nFROM users AS u\nJOIN profiles AS p ON u.id = p.user_id\nWHERE\n u.active = true\n AND u.created_at > '2023-01-01'\nGROUP BY\n u.id,\n u.name,\n u.email,\n p.title\nHAVING\n count(*) > 1\nORDER BY\n u.created_at DESC,\n u.name ASC\nLIMIT 10\nOFFSET 5",
217
"pretty/select_statements-1.sql": "SELECT id, name, email FROM users WHERE active = true",
318
"pretty/select_statements-2.sql": "SELECT \n u.id,\n u.name,\n u.email,\n p.title as profile_title\nFROM users u\nJOIN profiles p ON u.id = p.user_id\nWHERE u.active = true\n AND u.created_at > '2023-01-01'\nGROUP BY u.id, u.name, u.email, p.title\nHAVING COUNT(*) > 1\nORDER BY u.created_at DESC, u.name ASC\nLIMIT 10\nOFFSET 5",
419
"pretty/select_statements-3.sql": "SELECT id, name FROM users WHERE id IN (\n SELECT user_id FROM orders WHERE total > 100\n)",
@@ -18,6 +33,9 @@
1833
"pretty/misc-11.sql": "SELECT *\nFROM users u,\nLATERAL (\n SELECT \n (CASE \n WHEN u.is_admin THEN 'admin_dashboard'\n ELSE 'user_dashboard'\n END) AS dashboard_view\n) AS derived",
1934
"pretty/misc-12.sql": "SELECT \n id,\n (SELECT \n CASE \n WHEN COUNT(*) > 5 THEN 'frequent'\n ELSE 'occasional'\n END\n FROM purchases p WHERE p.user_id = u.id) AS purchase_freq\nFROM users u",
2035
"pretty/misc-13.sql": "SELECT \n id,\n CASE \n WHEN rank() OVER (ORDER BY score DESC) = 1 THEN 'top'\n ELSE 'normal'\n END AS tier\nFROM players",
36+
"pretty/misc-14.sql": "CREATE TRIGGER decrease_job_queue_count_on_delete \n AFTER DELETE ON dashboard_jobs.jobs \n FOR EACH ROW\n WHEN ( OLD.queue_name IS NOT NULL ) \n EXECUTE PROCEDURE dashboard_jobs.tg_decrease_job_queue_count ()",
37+
"pretty/misc-15.sql": "ALTER DEFAULT PRIVILEGES IN SCHEMA dashboard_jobs \n GRANT EXECUTE ON FUNCTIONS TO administrator",
38+
"pretty/misc-16.sql": "GRANT EXECUTE ON FUNCTION dashboard_private.uuid_generate_seeded_uuid TO PUBLIC",
2139
"pretty/create_table-1.sql": "CREATE TABLE users (\n id SERIAL PRIMARY KEY,\n name TEXT NOT NULL,\n email TEXT UNIQUE\n)",
2240
"pretty/create_table-2.sql": "CREATE TABLE products (\n id SERIAL PRIMARY KEY,\n name VARCHAR(255) NOT NULL,\n price DECIMAL(10,2) CHECK (price > 0),\n category_id INTEGER,\n description TEXT,\n created_at TIMESTAMP DEFAULT now(),\n updated_at TIMESTAMP,\n UNIQUE (name, category_id),\n FOREIGN KEY (category_id) REFERENCES categories(id)\n)",
2341
"pretty/create_table-3.sql": "CREATE TABLE orders (\n id SERIAL PRIMARY KEY,\n subtotal DECIMAL(10,2) NOT NULL,\n tax_rate DECIMAL(5,4) DEFAULT 0.0825,\n tax_amount DECIMAL(10,2) GENERATED ALWAYS AS (subtotal * tax_rate) STORED,\n total DECIMAL(10,2) GENERATED ALWAYS AS (subtotal + tax_amount) STORED\n)",

__fixtures__/kitchen-sink/pretty/misc.sql

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,3 +212,20 @@ SELECT
212212
ELSE 'normal'
213213
END AS tier
214214
FROM players;
215+
216+
-- 14. A trigger
217+
218+
CREATE TRIGGER decrease_job_queue_count_on_delete
219+
AFTER DELETE ON dashboard_jobs.jobs
220+
FOR EACH ROW
221+
WHEN ( OLD.queue_name IS NOT NULL )
222+
EXECUTE PROCEDURE dashboard_jobs.tg_decrease_job_queue_count ();
223+
224+
-- 15. default privileges
225+
226+
ALTER DEFAULT PRIVILEGES IN SCHEMA dashboard_jobs
227+
GRANT EXECUTE ON FUNCTIONS TO administrator;
228+
229+
-- 16. grant execute on function
230+
231+
GRANT EXECUTE ON FUNCTION dashboard_private.uuid_generate_seeded_uuid TO PUBLIC;
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
-- 1. Single simple target (no newline)
2+
SELECT 1;
3+
4+
-- 2. Single casted literal (no newline)
5+
SELECT 'abc'::text;
6+
7+
-- 3. Single function call with operator (no newline)
8+
SELECT now() AT TIME ZONE 'UTC';
9+
10+
-- 4. Multiple literals (newline format)
11+
SELECT
12+
1,
13+
2;
14+
15+
-- 5. Multiple identifiers (newline format)
16+
SELECT
17+
id,
18+
name,
19+
email
20+
FROM users;
21+
22+
-- 6. SELECT with DISTINCT and single target (no newline)
23+
SELECT DISTINCT id FROM users;
24+
25+
-- 7. SELECT with DISTINCT and multiple targets (newline format)
26+
SELECT DISTINCT
27+
id,
28+
name
29+
FROM users;
30+
31+
-- 8. SELECT with aliasing and expressions (newline format)
32+
SELECT
33+
id,
34+
upper(name) AS name_upper,
35+
created_at + interval '1 day' AS expires_at
36+
FROM accounts;
37+
38+
-- 9. SELECT with subselect (single target, no newline)
39+
SELECT (SELECT max(score) FROM results);
40+
41+
-- 10. SELECT with function and window (multiple targets, newline format)
42+
SELECT
43+
count(*) OVER (),
44+
u.id
45+
FROM users u;
46+
47+
48+
-- 11. Union query combining customer and supplier names with ALL modifier
49+
SELECT
50+
name
51+
FROM customers
52+
UNION
53+
ALL
54+
SELECT
55+
name
56+
FROM suppliers
57+
ORDER BY
58+
name;
59+
60+
61+
-- 12. Complex join query demonstrating multiple join types (INNER, LEFT, RIGHT)
62+
SELECT
63+
u.id,
64+
u.name,
65+
u.email,
66+
p.title
67+
FROM users AS u
68+
JOIN profiles AS p ON u.id = p.user_id
69+
LEFT JOIN orders AS o ON u.id = o.user_id
70+
RIGHT JOIN addresses AS a ON u.id = a.user_id
71+
WHERE
72+
u.active = true;
73+
74+
-- 13. Subquery in WHERE clause using IN operator
75+
SELECT
76+
id,
77+
name
78+
FROM users
79+
WHERE
80+
id IN (SELECT
81+
user_id
82+
FROM orders
83+
WHERE
84+
total > 100);
85+
86+
87+
-- 14. Basic SELECT with WHERE clause filtering active users
88+
SELECT
89+
id,
90+
name,
91+
email
92+
FROM users
93+
WHERE
94+
active = true;
95+
96+
-- 15. Complex query with JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT and OFFSET
97+
SELECT
98+
u.id,
99+
u.name,
100+
u.email,
101+
p.title
102+
FROM users AS u
103+
JOIN profiles AS p ON u.id = p.user_id
104+
WHERE
105+
u.active = true
106+
AND u.created_at > '2023-01-01'
107+
GROUP BY
108+
u.id,
109+
u.name,
110+
u.email,
111+
p.title
112+
HAVING
113+
count(*) > 1
114+
ORDER BY
115+
u.created_at DESC,
116+
u.name ASC
117+
LIMIT 10
118+
OFFSET 5;

packages/deparser/__tests__/kitchen-sink/pretty-misc.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ it('pretty-misc', async () => {
1616
"pretty/misc-10.sql",
1717
"pretty/misc-11.sql",
1818
"pretty/misc-12.sql",
19-
"pretty/misc-13.sql"
19+
"pretty/misc-13.sql",
20+
"pretty/misc-14.sql",
21+
"pretty/misc-15.sql",
22+
"pretty/misc-16.sql"
2023
]);
2124
});
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
import { FixtureTestUtils } from '../../test-utils';
3+
const fixtures = new FixtureTestUtils();
4+
5+
it('pretty-selects', async () => {
6+
await fixtures.runFixtureTests([
7+
"pretty/selects-1.sql",
8+
"pretty/selects-2.sql",
9+
"pretty/selects-3.sql",
10+
"pretty/selects-4.sql",
11+
"pretty/selects-5.sql",
12+
"pretty/selects-6.sql",
13+
"pretty/selects-7.sql",
14+
"pretty/selects-8.sql",
15+
"pretty/selects-9.sql",
16+
"pretty/selects-10.sql",
17+
"pretty/selects-11.sql",
18+
"pretty/selects-12.sql",
19+
"pretty/selects-13.sql",
20+
"pretty/selects-14.sql",
21+
"pretty/selects-15.sql"
22+
]);
23+
});

packages/deparser/__tests__/pretty/__snapshots__/create-policy-pretty.test.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ exports[`Pretty CREATE POLICY formatting should format simple CREATE POLICY with
3030
ON posts
3131
AS PERMISSIVE
3232
FOR SELECT
33-
TO public
33+
TO PUBLIC
3434
USING (
3535
published = true
3636
);"

0 commit comments

Comments
 (0)