Skip to content

Commit d4ec49b

Browse files
committed
casing
1 parent b6cb7d2 commit d4ec49b

File tree

5 files changed

+402
-0
lines changed

5 files changed

+402
-0
lines changed

__fixtures__/generated/generated.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,38 @@
110110
"pretty/constraints-12.sql": "ALTER TABLE products ADD CONSTRAINT fk_category \n FOREIGN KEY (category_id) \n REFERENCES categories(id) \n ON UPDATE CASCADE \n ON DELETE SET NULL \n DEFERRABLE INITIALLY DEFERRED",
111111
"pretty/constraints-13.sql": "ALTER TABLE products ADD CONSTRAINT check_price CHECK (price > 0)",
112112
"pretty/constraints-14.sql": "ALTER TABLE users ADD CONSTRAINT unique_email UNIQUE (email)",
113+
"pretty/casing-1.sql": "INSERT INTO users (name) VALUES ('John Doe')",
114+
"pretty/casing-2.sql": "INSERT INTO users (name) VALUES ('ADMINISTRATOR')",
115+
"pretty/casing-3.sql": "INSERT INTO users (name) VALUES ('lowercase')",
116+
"pretty/casing-4.sql": "INSERT INTO users (name) VALUES ('camelCaseString')",
117+
"pretty/casing-5.sql": "INSERT INTO users (name) VALUES ('snake_case_string')",
118+
"pretty/casing-6.sql": "INSERT INTO users (name) VALUES ('kebab-case-value')",
119+
"pretty/casing-7.sql": "INSERT INTO data.snapshots (metadata) VALUES ('{\"Type\": \"Full\", \"Status\": \"OK\"}')",
120+
"pretty/casing-8.sql": "INSERT INTO \"AppSchema\".\"User Data\" (\"Full Name\") VALUES ('Jane Smith')",
121+
"pretty/casing-9.sql": "INSERT INTO logtable (message) VALUES ('Init')",
122+
"pretty/casing-10.sql": "INSERT INTO metrics.logs (message) VALUES ('NOW()')",
123+
"pretty/casing-11.sql": "INSERT INTO users (name) VALUES ('SELECT')",
124+
"pretty/casing-12.sql": "INSERT INTO users (name) VALUES ('[email protected]')",
125+
"pretty/casing-13.sql": "SELECT 'MixedCase'",
126+
"pretty/casing-14.sql": "SELECT 'UPPERCASE'",
127+
"pretty/casing-15.sql": "SELECT 'lowercase'",
128+
"pretty/casing-16.sql": "SELECT 'camelCase'",
129+
"pretty/casing-17.sql": "SELECT 'snake_case'",
130+
"pretty/casing-18.sql": "SELECT 'kebab-case'",
131+
"pretty/casing-19.sql": "SELECT 'SELECT * FROM users'",
132+
"pretty/casing-20.sql": "SELECT 'sum(a + b)'",
133+
"pretty/casing-21.sql": "SELECT name AS \"UserLabel\" FROM users",
134+
"pretty/casing-22.sql": "SELECT * FROM users WHERE name = 'camelCaseString'",
135+
"pretty/casing-23.sql": "SELECT * FROM users WHERE name = 'lowercase'",
136+
"pretty/casing-24.sql": "SELECT * FROM users WHERE name = 'ADMINISTRATOR'",
137+
"pretty/casing-25.sql": "SELECT * FROM logs WHERE message LIKE 'Warn%'",
138+
"pretty/casing-26.sql": "SELECT * FROM alerts WHERE level IN ('Low', 'MEDIUM', 'High', 'CRITICAL')",
139+
"pretty/casing-27.sql": "SELECT 'It''s working'",
140+
"pretty/casing-28.sql": "SELECT E'Line1\\\\nLine2'",
141+
"pretty/casing-29.sql": "SELECT 'Status: ✅'",
142+
"pretty/casing-30.sql": "SELECT 'ALERT' AS \"Level\"",
143+
"pretty/casing-31.sql": "SELECT \"HandleInsert\"('TYPE_A', 'Region-1')",
144+
"pretty/casing-32.sql": "SELECT * FROM \"dataPoints\"",
113145
"original/simple-1.sql": "SELECT\n *\nFROM\n table_name\nWHERE\n name = 'test' AND num > 7 AND\n last_name LIKE '%''test''%'",
114146
"original/simple-2.sql": "SELECT\n *\nFROM\n table_name\nWHERE\n name = 'test' AND num > 7 AND\n last_name NOT LIKE '%''test''%'",
115147
"original/simple-3.sql": "SELECT\n *\nFROM\n table_name\nWHERE\n name = 'test' AND num > 7 AND\n last_name ILIKE '%''test''%'",
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
-- 1. Insert with simple mixed-case string
2+
INSERT INTO users (name) VALUES ('John Doe');
3+
4+
-- 2. Insert with ALL CAPS
5+
INSERT INTO users (name) VALUES ('ADMINISTRATOR');
6+
7+
-- 3. Insert with lowercase only
8+
INSERT INTO users (name) VALUES ('lowercase');
9+
10+
-- 4. Insert with camelCase
11+
INSERT INTO users (name) VALUES ('camelCaseString');
12+
13+
-- 5. Insert with snake_case
14+
INSERT INTO users (name) VALUES ('snake_case_string');
15+
16+
-- 6. Insert with kebab-case (string literal)
17+
INSERT INTO users (name) VALUES ('kebab-case-value');
18+
19+
-- 7. Insert with JSON-looking string
20+
INSERT INTO data.snapshots (metadata) VALUES ('{"Type": "Full", "Status": "OK"}');
21+
22+
-- 8. Insert into quoted table and column
23+
INSERT INTO "AppSchema"."User Data" ("Full Name") VALUES ('Jane Smith');
24+
25+
-- 9. Insert multiple values with mixed casing
26+
-- FILE ISSUE FOR THIS upstream:
27+
-- INSERT INTO logtable (message) VALUES ('Init'), ('Reboot'), ('ERROR'), ('Warning'), ('info');
28+
INSERT INTO logtable (message) VALUES ('Init');
29+
30+
-- 10. Insert a string that looks like a function
31+
INSERT INTO metrics.logs (message) VALUES ('NOW()');
32+
33+
-- 11. Insert with exact keyword-looking string
34+
INSERT INTO users (name) VALUES ('SELECT');
35+
36+
-- 12. Insert lowercase string with special characters
37+
INSERT INTO users (name) VALUES ('[email protected]');
38+
39+
-- 13. Select mixed-case string literal
40+
SELECT 'MixedCase';
41+
42+
-- 14. Select all uppercase
43+
SELECT 'UPPERCASE';
44+
45+
-- 15. Select lowercase
46+
SELECT 'lowercase';
47+
48+
-- 16. Select camelCase
49+
SELECT 'camelCase';
50+
51+
-- 17. Select snake_case
52+
SELECT 'snake_case';
53+
54+
-- 18. Select kebab-case
55+
SELECT 'kebab-case';
56+
57+
-- 19. Select string that looks like SQL
58+
SELECT 'SELECT * FROM users';
59+
60+
-- 20. Select string that looks like a function
61+
SELECT 'sum(a + b)';
62+
63+
-- 21. Select with alias and quoted output name
64+
SELECT name AS "UserLabel" FROM users;
65+
66+
-- 22. Select where literal is camelCase
67+
SELECT * FROM users WHERE name = 'camelCaseString';
68+
69+
-- 23. Select where literal is lowercase
70+
SELECT * FROM users WHERE name = 'lowercase';
71+
72+
-- 24. Select where literal is ALL CAPS
73+
SELECT * FROM users WHERE name = 'ADMINISTRATOR';
74+
75+
-- 25. Select where message starts with capital W
76+
SELECT * FROM logs WHERE message LIKE 'Warn%';
77+
78+
-- 26. Select with multiple casing in IN clause
79+
SELECT * FROM alerts WHERE level IN ('Low', 'MEDIUM', 'High', 'CRITICAL');
80+
81+
-- 27. Select string with escaped quote
82+
SELECT 'It''s working';
83+
84+
-- 28. Select with E-prefixed escape string
85+
SELECT E'Line1\\nLine2';
86+
87+
-- 29. Select with Unicode emoji string
88+
SELECT 'Status: ✅';
89+
90+
-- 30. Select into quoted alias
91+
SELECT 'ALERT' AS "Level";
92+
93+
-- 31. Select with quoted function name
94+
SELECT "HandleInsert"('TYPE_A', 'Region-1');
95+
96+
-- 32. Select with quoted table name
97+
SELECT * FROM "dataPoints";
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
import { FixtureTestUtils } from '../../test-utils';
3+
const fixtures = new FixtureTestUtils();
4+
5+
it('pretty-casing', async () => {
6+
await fixtures.runFixtureTests([
7+
"pretty/casing-1.sql",
8+
"pretty/casing-2.sql",
9+
"pretty/casing-3.sql",
10+
"pretty/casing-4.sql",
11+
"pretty/casing-5.sql",
12+
"pretty/casing-6.sql",
13+
"pretty/casing-7.sql",
14+
"pretty/casing-8.sql",
15+
"pretty/casing-9.sql",
16+
"pretty/casing-10.sql",
17+
"pretty/casing-11.sql",
18+
"pretty/casing-12.sql",
19+
"pretty/casing-13.sql",
20+
"pretty/casing-14.sql",
21+
"pretty/casing-15.sql",
22+
"pretty/casing-16.sql",
23+
"pretty/casing-17.sql",
24+
"pretty/casing-18.sql",
25+
"pretty/casing-19.sql",
26+
"pretty/casing-20.sql",
27+
"pretty/casing-21.sql",
28+
"pretty/casing-22.sql",
29+
"pretty/casing-23.sql",
30+
"pretty/casing-24.sql",
31+
"pretty/casing-25.sql",
32+
"pretty/casing-26.sql",
33+
"pretty/casing-27.sql",
34+
"pretty/casing-28.sql",
35+
"pretty/casing-29.sql",
36+
"pretty/casing-30.sql",
37+
"pretty/casing-31.sql",
38+
"pretty/casing-32.sql"
39+
]);
40+
});
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`non-pretty: pretty/casing-1.sql 1`] = `"INSERT INTO users (name) VALUES ('John Doe')"`;
4+
5+
exports[`non-pretty: pretty/casing-2.sql 1`] = `"INSERT INTO users (name) VALUES ('ADMINISTRATOR')"`;
6+
7+
exports[`non-pretty: pretty/casing-3.sql 1`] = `"INSERT INTO users (name) VALUES ('lowercase')"`;
8+
9+
exports[`non-pretty: pretty/casing-4.sql 1`] = `"INSERT INTO users (name) VALUES ('camelCaseString')"`;
10+
11+
exports[`non-pretty: pretty/casing-5.sql 1`] = `"INSERT INTO users (name) VALUES ('snake_case_string')"`;
12+
13+
exports[`non-pretty: pretty/casing-6.sql 1`] = `"INSERT INTO users (name) VALUES ('kebab-case-value')"`;
14+
15+
exports[`non-pretty: pretty/casing-7.sql 1`] = `"INSERT INTO data.snapshots (metadata) VALUES ('{"Type": "Full", "Status": "OK"}')"`;
16+
17+
exports[`non-pretty: pretty/casing-8.sql 1`] = `"INSERT INTO "AppSchema"."User Data" ("Full Name") VALUES ('Jane Smith')"`;
18+
19+
exports[`non-pretty: pretty/casing-9.sql 1`] = `"INSERT INTO logtable (message) VALUES ('Init')"`;
20+
21+
exports[`non-pretty: pretty/casing-10.sql 1`] = `"INSERT INTO metrics.logs (message) VALUES ('NOW()')"`;
22+
23+
exports[`non-pretty: pretty/casing-11.sql 1`] = `"INSERT INTO users (name) VALUES ('SELECT')"`;
24+
25+
exports[`non-pretty: pretty/casing-12.sql 1`] = `"INSERT INTO users (name) VALUES ('[email protected]')"`;
26+
27+
exports[`non-pretty: pretty/casing-13.sql 1`] = `"SELECT 'MixedCase'"`;
28+
29+
exports[`non-pretty: pretty/casing-14.sql 1`] = `"SELECT 'UPPERCASE'"`;
30+
31+
exports[`non-pretty: pretty/casing-15.sql 1`] = `"SELECT 'lowercase'"`;
32+
33+
exports[`non-pretty: pretty/casing-16.sql 1`] = `"SELECT 'camelCase'"`;
34+
35+
exports[`non-pretty: pretty/casing-17.sql 1`] = `"SELECT 'snake_case'"`;
36+
37+
exports[`non-pretty: pretty/casing-18.sql 1`] = `"SELECT 'kebab-case'"`;
38+
39+
exports[`non-pretty: pretty/casing-19.sql 1`] = `"SELECT 'SELECT * FROM users'"`;
40+
41+
exports[`non-pretty: pretty/casing-20.sql 1`] = `"SELECT 'sum(a + b)'"`;
42+
43+
exports[`non-pretty: pretty/casing-21.sql 1`] = `"SELECT name AS "UserLabel" FROM users"`;
44+
45+
exports[`non-pretty: pretty/casing-22.sql 1`] = `"SELECT * FROM users WHERE name = 'camelCaseString'"`;
46+
47+
exports[`non-pretty: pretty/casing-23.sql 1`] = `"SELECT * FROM users WHERE name = 'lowercase'"`;
48+
49+
exports[`non-pretty: pretty/casing-24.sql 1`] = `"SELECT * FROM users WHERE name = 'ADMINISTRATOR'"`;
50+
51+
exports[`non-pretty: pretty/casing-25.sql 1`] = `"SELECT * FROM logs WHERE message LIKE 'Warn%'"`;
52+
53+
exports[`non-pretty: pretty/casing-26.sql 1`] = `"SELECT * FROM alerts WHERE level IN ('Low', 'MEDIUM', 'High', 'CRITICAL')"`;
54+
55+
exports[`non-pretty: pretty/casing-27.sql 1`] = `"SELECT 'It''s working'"`;
56+
57+
exports[`non-pretty: pretty/casing-28.sql 1`] = `"SELECT E'Line1\\\\nLine2'"`;
58+
59+
exports[`non-pretty: pretty/casing-29.sql 1`] = `"SELECT 'Status: ✅'"`;
60+
61+
exports[`non-pretty: pretty/casing-30.sql 1`] = `"SELECT 'ALERT' AS "Level""`;
62+
63+
exports[`non-pretty: pretty/casing-31.sql 1`] = `"SELECT "HandleInsert"('TYPE_A', 'Region-1')"`;
64+
65+
exports[`non-pretty: pretty/casing-32.sql 1`] = `"SELECT * FROM "dataPoints""`;
66+
67+
exports[`pretty: pretty/casing-1.sql 1`] = `
68+
"INSERT INTO users (name) VALUES
69+
('John Doe')"
70+
`;
71+
72+
exports[`pretty: pretty/casing-2.sql 1`] = `
73+
"INSERT INTO users (name) VALUES
74+
('ADMINISTRATOR')"
75+
`;
76+
77+
exports[`pretty: pretty/casing-3.sql 1`] = `
78+
"INSERT INTO users (name) VALUES
79+
('lowercase')"
80+
`;
81+
82+
exports[`pretty: pretty/casing-4.sql 1`] = `
83+
"INSERT INTO users (name) VALUES
84+
('camelCaseString')"
85+
`;
86+
87+
exports[`pretty: pretty/casing-5.sql 1`] = `
88+
"INSERT INTO users (name) VALUES
89+
('snake_case_string')"
90+
`;
91+
92+
exports[`pretty: pretty/casing-6.sql 1`] = `
93+
"INSERT INTO users (name) VALUES
94+
('kebab-case-value')"
95+
`;
96+
97+
exports[`pretty: pretty/casing-7.sql 1`] = `
98+
"INSERT INTO data.snapshots (metadata) VALUES
99+
('{"Type": "Full", "Status": "OK"}')"
100+
`;
101+
102+
exports[`pretty: pretty/casing-8.sql 1`] = `
103+
"INSERT INTO "AppSchema"."User Data" ("Full Name") VALUES
104+
('Jane Smith')"
105+
`;
106+
107+
exports[`pretty: pretty/casing-9.sql 1`] = `
108+
"INSERT INTO logtable (message) VALUES
109+
('Init')"
110+
`;
111+
112+
exports[`pretty: pretty/casing-10.sql 1`] = `
113+
"INSERT INTO metrics.logs (message) VALUES
114+
('NOW()')"
115+
`;
116+
117+
exports[`pretty: pretty/casing-11.sql 1`] = `
118+
"INSERT INTO users (name) VALUES
119+
('SELECT')"
120+
`;
121+
122+
exports[`pretty: pretty/casing-12.sql 1`] = `
123+
"INSERT INTO users (name) VALUES
124+
125+
`;
126+
127+
exports[`pretty: pretty/casing-13.sql 1`] = `"SELECT 'MixedCase'"`;
128+
129+
exports[`pretty: pretty/casing-14.sql 1`] = `"SELECT 'UPPERCASE'"`;
130+
131+
exports[`pretty: pretty/casing-15.sql 1`] = `"SELECT 'lowercase'"`;
132+
133+
exports[`pretty: pretty/casing-16.sql 1`] = `"SELECT 'camelCase'"`;
134+
135+
exports[`pretty: pretty/casing-17.sql 1`] = `"SELECT 'snake_case'"`;
136+
137+
exports[`pretty: pretty/casing-18.sql 1`] = `"SELECT 'kebab-case'"`;
138+
139+
exports[`pretty: pretty/casing-19.sql 1`] = `"SELECT 'SELECT * FROM users'"`;
140+
141+
exports[`pretty: pretty/casing-20.sql 1`] = `"SELECT 'sum(a + b)'"`;
142+
143+
exports[`pretty: pretty/casing-21.sql 1`] = `
144+
"SELECT name AS "UserLabel"
145+
FROM users"
146+
`;
147+
148+
exports[`pretty: pretty/casing-22.sql 1`] = `
149+
"SELECT *
150+
FROM users
151+
WHERE
152+
name = 'camelCaseString'"
153+
`;
154+
155+
exports[`pretty: pretty/casing-23.sql 1`] = `
156+
"SELECT *
157+
FROM users
158+
WHERE
159+
name = 'lowercase'"
160+
`;
161+
162+
exports[`pretty: pretty/casing-24.sql 1`] = `
163+
"SELECT *
164+
FROM users
165+
WHERE
166+
name = 'ADMINISTRATOR'"
167+
`;
168+
169+
exports[`pretty: pretty/casing-25.sql 1`] = `
170+
"SELECT *
171+
FROM logs
172+
WHERE
173+
message LIKE 'Warn%'"
174+
`;
175+
176+
exports[`pretty: pretty/casing-26.sql 1`] = `
177+
"SELECT *
178+
FROM alerts
179+
WHERE
180+
level IN ('Low', 'MEDIUM', 'High', 'CRITICAL')"
181+
`;
182+
183+
exports[`pretty: pretty/casing-27.sql 1`] = `"SELECT 'It''s working'"`;
184+
185+
exports[`pretty: pretty/casing-28.sql 1`] = `"SELECT E'Line1\\\\nLine2'"`;
186+
187+
exports[`pretty: pretty/casing-29.sql 1`] = `"SELECT 'Status: ✅'"`;
188+
189+
exports[`pretty: pretty/casing-30.sql 1`] = `"SELECT 'ALERT' AS "Level""`;
190+
191+
exports[`pretty: pretty/casing-31.sql 1`] = `"SELECT "HandleInsert"('TYPE_A', 'Region-1')"`;
192+
193+
exports[`pretty: pretty/casing-32.sql 1`] = `
194+
"SELECT *
195+
FROM "dataPoints""
196+
`;

0 commit comments

Comments
 (0)