|
1 |
| -const { highlight } = require('./lib') |
| 1 | +const { highlight, getSegments } = require('./lib') |
2 | 2 |
|
3 | 3 | const OPTIONS = {
|
4 | 4 | colors: {
|
@@ -182,3 +182,49 @@ describe('html', () => {
|
182 | 182 | .toBe('<span class="sql-hl-keyword">SELECT</span> id <span class="sql-hl-keyword">FROM</span> users')
|
183 | 183 | })
|
184 | 184 | })
|
| 185 | + |
| 186 | +describe('getSegments', () => { |
| 187 | + it('complex query', () => { |
| 188 | + expect(getSegments("SELECT COUNT(id), `id`, `username` FROM `users` WHERE `email` = '[email protected]' AND `foo` = 'BAR' OR 1=1")) |
| 189 | + .toStrictEqual([ |
| 190 | + { name: 'keyword', content: 'SELECT' }, |
| 191 | + { name: 'default', content: ' ' }, |
| 192 | + { name: 'function', content: 'COUNT' }, |
| 193 | + { name: 'bracket', content: '(' }, |
| 194 | + { name: 'default', content: 'id' }, |
| 195 | + { name: 'bracket', content: ')' }, |
| 196 | + { name: 'special', content: ',' }, |
| 197 | + { name: 'default', content: ' ' }, |
| 198 | + { name: 'string', content: '`id`' }, |
| 199 | + { name: 'special', content: ',' }, |
| 200 | + { name: 'default', content: ' ' }, |
| 201 | + { name: 'string', content: '`username`' }, |
| 202 | + { name: 'default', content: ' ' }, |
| 203 | + { name: 'keyword', content: 'FROM' }, |
| 204 | + { name: 'default', content: ' ' }, |
| 205 | + { name: 'string', content: '`users`' }, |
| 206 | + { name: 'default', content: ' ' }, |
| 207 | + { name: 'keyword', content: 'WHERE' }, |
| 208 | + { name: 'default', content: ' ' }, |
| 209 | + { name: 'string', content: '`email`' }, |
| 210 | + { name: 'default', content: ' ' }, |
| 211 | + { name: 'special', content: '=' }, |
| 212 | + { name: 'default', content: ' ' }, |
| 213 | + { name: 'string', content: "'[email protected]'" }, |
| 214 | + { name: 'default', content: ' ' }, |
| 215 | + { name: 'keyword', content: 'AND' }, |
| 216 | + { name: 'default', content: ' ' }, |
| 217 | + { name: 'string', content: '`foo`' }, |
| 218 | + { name: 'default', content: ' ' }, |
| 219 | + { name: 'special', content: '=' }, |
| 220 | + { name: 'default', content: ' ' }, |
| 221 | + { name: 'string', content: "'BAR'" }, |
| 222 | + { name: 'default', content: ' ' }, |
| 223 | + { name: 'keyword', content: 'OR' }, |
| 224 | + { name: 'default', content: ' ' }, |
| 225 | + { name: 'number', content: '1' }, |
| 226 | + { name: 'special', content: '=' }, |
| 227 | + { name: 'number', content: '1' } |
| 228 | + ]) |
| 229 | + }) |
| 230 | +}) |
0 commit comments