This repository has been archived by the owner on Jul 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 198
/
ReactA11yTitlesRuleTests.ts
139 lines (114 loc) · 4.15 KB
/
ReactA11yTitlesRuleTests.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import { Utils } from '../utils/Utils';
import { TestHelper } from './TestHelper';
describe('reactA11yTitlesRule', (): void => {
const ruleName: string = 'react-a11y-titles';
it('should pass on when title is not empty', (): void => {
const script: string = `
import React = require('react');
const title = <title>some title</title>;
`;
TestHelper.assertViolations(ruleName, script, []);
});
it('should fail on empty title', (): void => {
const script: string = `
import React = require('react');
const title = <title></title>;
`;
TestHelper.assertViolations(ruleName, script, [
{
failure: 'Title elements must not be empty',
name: Utils.absolutePath('file.tsx'),
ruleName: 'react-a11y-titles',
startPosition: { character: 27, line: 4 }
}
]);
});
it('should fail on self-closing title', (): void => {
const script: string = `
import React = require('react');
const title = <title />;
`;
TestHelper.assertViolations(ruleName, script, [
{
failure: 'Title elements must not be empty',
name: Utils.absolutePath('file.tsx'),
ruleName: 'react-a11y-titles',
startPosition: { character: 27, line: 4 }
}
]);
});
it('should fail on longer than 60 charactes title', (): void => {
const title: string = 'a'.repeat(60);
const script: string = `
import React = require('react');
const title = <title>test ${title}</title>;
`;
TestHelper.assertViolations(ruleName, script, [
{
failure: 'Title length must not be longer than 60 characters: test aaaaaaaaaaaaa...',
name: Utils.absolutePath('file.tsx'),
ruleName: 'react-a11y-titles',
startPosition: {
character: 27,
line: 4
}
}
]);
});
it('should pass on shorter than 60 characters title', (): void => {
const title: string = 'a'.repeat(5);
const script: string = `
import React = require('react');
const title = <title>test ${title}</title>;
`;
TestHelper.assertViolations(ruleName, script, []);
});
it('should fail on single world title', (): void => {
const script: string = `
import React = require('react');
const title = <title>test</title>;
`;
TestHelper.assertViolations(ruleName, script, [
{
failure: 'Title must contain more than one word: test',
name: Utils.absolutePath('file.tsx'),
ruleName: 'react-a11y-titles',
startPosition: {
character: 27,
line: 4
}
}
]);
});
it('should fail on single world title in expression', (): void => {
const script: string = `
import React = require('react');
const title = <title>{'test'}</title>;
`;
TestHelper.assertViolations(ruleName, script, [
{
failure: 'Title must contain more than one word: test',
name: Utils.absolutePath('file.tsx'),
ruleName: 'react-a11y-titles',
startPosition: {
character: 27,
line: 4
}
}
]);
});
it('should pass on multi world title', (): void => {
const script: string = `
import React = require('react');
const title = <title>test test</title>;
`;
TestHelper.assertViolations(ruleName, script, []);
});
it('should pass on multi world title inside expression', (): void => {
const script: string = `
import React = require('react');
const title = <title>{'test test'}</title>;
`;
TestHelper.assertViolations(ruleName, script, []);
});
});