-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: move AggregateFunctionsSuggestion to a separate interface, refactor general parser create tests #92
Changes from all commits
610285a
f905a1a
6ade402
73dfc13
5db4ab1
36bcf08
c7e788a
e6284f0
cb989d9
ddfd4ea
bfb289e
7b2d61a
5c0713b
72d6847
826e987
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# Code conventions | ||
|
||
A set of rules all contributors should follow. | ||
You can always link those rules in your PR without hesitation if you see that they are not followed. | ||
|
||
## Testing | ||
|
||
- Each test should only test a granular added piece of logic, and shouldn't test functionality of other's. E.g. if you are using OptionalIfNotExists, you shouldn't test if you get suggestions when writing '', 'IF ', 'IF NOT', just test if `IF NOT EXISTS` is suggesting, and it's enough. | ||
- Each test file should contain at least: | ||
- A test that checks a complete statement for errors | ||
- A test that checks a complete statement locations (can be merged with the one above) | ||
- Don't use `foo` or `bar` custom names, always use `test_{object}`, e.g. `SELECT * FROM test_table`, not `SELECT * FROM hehe_haha`. If you need multiple names, use `_{number}` suffix, e.g. `SELECT test_field, test_field_2 FROM test_table;` | ||
- Write all the static tokens in UPPER_CASE, and all the custom variables in lower_case, e.g. `SELECT test_field` | ||
- Always test your statements on errors, and if there's an unexpected error, just add `TODO: fix unhandled error` error | ||
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
import { | ||
KeywordSuggestion, | ||
parseGenericSql, | ||
} from '../../../../index'; | ||
import {expect, test} from '@jest/globals'; | ||
|
||
test('should suggest ALTER', () => { | ||
const parseResult = parseGenericSql('', ''); | ||
|
||
expect(parseResult.errors).toBeUndefined(); | ||
|
||
const suggestion: KeywordSuggestion = { value: 'ALTER', weight: -1 }; | ||
expect(parseResult.suggestKeywords).toContainEqual(suggestion); | ||
}) |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -26,6 +26,7 @@ AlterTable | |
: AlterTableLeftSide PartitionSpec | ||
; | ||
|
||
// TODO: support AlterTableRightSide, PartitionSpec will not work for MySQL, PostgreSQL | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We don't have There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, noticed that.. |
||
AlterTable_EDIT | ||
: AlterTableLeftSide_EDIT | ||
| AlterTableLeftSide_EDIT PartitionSpec | ||
|
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import { | ||
DatabasesSuggestion, | ||
KeywordSuggestion, | ||
parseGenericSql, TablesSuggestion, | ||
} from '../../../../index'; | ||
import {expect, test} from '@jest/globals'; | ||
|
||
test('should suggest altering table', () => { | ||
const parseResult = parseGenericSql('ALTER ', ''); | ||
|
||
expect(parseResult.errors).toBeUndefined(); | ||
|
||
const suggestion: KeywordSuggestion = { value: 'TABLE', weight: -1 }; | ||
expect(parseResult.suggestKeywords).toContainEqual(suggestion); | ||
}) | ||
|
||
test('should suggest tables to alter', () => { | ||
const parseResult = parseGenericSql('ALTER TABLE ', ''); | ||
|
||
expect(parseResult.errors).toBeUndefined(); | ||
|
||
const tablesSuggestion: TablesSuggestion = { | ||
onlyTables: true, | ||
}; | ||
expect(parseResult.suggestTables).toEqual(tablesSuggestion); | ||
|
||
const databasesSuggestion: DatabasesSuggestion = { | ||
appendDot: true, | ||
} | ||
expect(parseResult.suggestDatabases).toEqual(databasesSuggestion); | ||
}) | ||
|
||
// TODO: add full tests + locations test |
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should I add something else, or is it complete?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's pretty good!