Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ba1eb20

Browse files
test(type-utils): add unit tests for requiresQuoting (typescript-eslint#8691)
* test: add testCase * test: fix test case result * docs: add comment in testcase and function
1 parent 1763889 commit ba1eb20

File tree

2 files changed

+87
-1
lines changed

2 files changed

+87
-1
lines changed

packages/type-utils/src/requiresQuoting.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as ts from 'typescript';
2-
2+
/*** Indicates whether identifiers require the use of quotation marks when accessing property definitions and dot notation. */
33
function requiresQuoting(
44
name: string,
55
target: ts.ScriptTarget = ts.ScriptTarget.ESNext,
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import { requiresQuoting } from '../src';
2+
3+
describe('getDeclaration', () => {
4+
describe('valid identifier', () => {
5+
it('upper and lower case alphabet', () => {
6+
const name = 'c';
7+
const result = requiresQuoting(name);
8+
expect(result).toBe(false);
9+
});
10+
11+
it('upper and lower case alphabet with number not first', () => {
12+
const name = 'foo1234Bar';
13+
const result = requiresQuoting(name);
14+
expect(result).toBe(false);
15+
});
16+
17+
it('start with dollorSign', () => {
18+
const name = '$bar';
19+
const result = requiresQuoting(name);
20+
expect(result).toBe(false);
21+
});
22+
it('include dollorSign not start position', () => {
23+
const name = 'foo$bar';
24+
const result = requiresQuoting(name);
25+
expect(result).toBe(false);
26+
});
27+
28+
it('start with underScore', () => {
29+
const name = '_bar';
30+
const result = requiresQuoting(name);
31+
expect(result).toBe(false);
32+
});
33+
it('include underScore not start position', () => {
34+
const name = 'foo_bar';
35+
const result = requiresQuoting(name);
36+
expect(result).toBe(false);
37+
});
38+
39+
it('non-alphabet characters', () => {
40+
const name = 'café';
41+
const result = requiresQuoting(name);
42+
expect(result).toBe(false);
43+
});
44+
});
45+
46+
describe('invalid identifier', () => {
47+
// This test case is written because it is possible to access object properties, but dot annotation is not accessible.
48+
it('only number', () => {
49+
const name = '12345';
50+
const result = requiresQuoting(name);
51+
expect(result).toBe(true);
52+
});
53+
it('start with number', () => {
54+
const name = '1axcef';
55+
const result = requiresQuoting(name);
56+
expect(result).toBe(true);
57+
});
58+
it('start with dash', () => {
59+
const name = '-bar';
60+
const result = requiresQuoting(name);
61+
expect(result).toBe(true);
62+
});
63+
it('include dash not start position', () => {
64+
const name = 'foo-bar';
65+
const result = requiresQuoting(name);
66+
expect(result).toBe(true);
67+
});
68+
it('empty string', () => {
69+
const name = '';
70+
const result = requiresQuoting(name);
71+
expect(result).toBe(true);
72+
});
73+
it('include special symbol at first', () => {
74+
const name = '!asdfs';
75+
const result = requiresQuoting(name);
76+
expect(result).toBe(true);
77+
});
78+
79+
it('include special symbol at middle', () => {
80+
const name = 'asd!fs';
81+
const result = requiresQuoting(name);
82+
83+
expect(result).toBe(true);
84+
});
85+
});
86+
});

0 commit comments

Comments
 (0)