source: frontend/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/getAccessibleChildText-test.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 2 weeks ago

Fix frontend appearance

  • Property mode set to 100644
File size: 3.9 KB
Line 
1import test from 'tape';
2import { elementType } from 'jsx-ast-utils';
3
4import getAccessibleChildText from '../../../src/util/getAccessibleChildText';
5import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock';
6import JSXElementMock from '../../../__mocks__/JSXElementMock';
7
8test('getAccessibleChildText', (t) => {
9 t.equal(
10 getAccessibleChildText(JSXElementMock(
11 'a',
12 [JSXAttributeMock('aria-label', 'foo')],
13 ), elementType),
14 'foo',
15 'returns the aria-label when present',
16 );
17
18 t.equal(
19 getAccessibleChildText(JSXElementMock(
20 'a',
21 [JSXAttributeMock('aria-label', 'foo')],
22 [{ type: 'JSXText', value: 'bar' }],
23 ), elementType),
24 'foo',
25 'returns the aria-label instead of children',
26 );
27
28 t.equal(
29 getAccessibleChildText(JSXElementMock(
30 'a',
31 [JSXAttributeMock('aria-hidden', 'true')],
32 ), elementType),
33 '',
34 'skips elements with aria-hidden=true',
35 );
36
37 t.equal(
38 getAccessibleChildText(JSXElementMock(
39 'a',
40 [],
41 [{ type: 'JSXText', value: 'bar' }],
42 ), elementType),
43 'bar',
44 'returns literal value for JSXText child',
45 );
46
47 t.equal(
48 getAccessibleChildText(JSXElementMock(
49 'a',
50 [],
51 [JSXElementMock('img', [
52 JSXAttributeMock('src', 'some/path'),
53 JSXAttributeMock('alt', 'a sensible label'),
54 ])],
55 ), elementType),
56 'a sensible label',
57 'returns alt text for img child',
58 );
59
60 t.equal(
61 getAccessibleChildText(JSXElementMock(
62 'a',
63 [],
64 [JSXElementMock('span', [
65 JSXAttributeMock('alt', 'a sensible label'),
66 ])],
67 ), elementType),
68 '',
69 'returns blank when alt tag is used on arbitrary element',
70 );
71
72 t.equal(
73 getAccessibleChildText(JSXElementMock(
74 'a',
75 [],
76 [{ type: 'Literal', value: 'bar' }],
77 ), elementType),
78 'bar',
79 'returns literal value for JSXText child',
80 );
81
82 t.equal(
83 getAccessibleChildText(JSXElementMock(
84 'a',
85 [],
86 [{ type: 'Literal', value: ' bar ' }],
87 ), elementType),
88 'bar',
89 'returns trimmed literal value for JSXText child',
90 );
91
92 t.equal(
93 getAccessibleChildText(JSXElementMock(
94 'a',
95 [],
96 [{ type: 'Literal', value: 'foo bar' }],
97 ), elementType),
98 'foo bar',
99 'returns space-collapsed literal value for JSXText child',
100 );
101
102 t.equal(
103 getAccessibleChildText(JSXElementMock(
104 'a',
105 [],
106 [{ type: 'Literal', value: 'foo, bar. baz? foo; bar:' }],
107 ), elementType),
108 'foo bar baz foo bar',
109 'returns punctuation-stripped literal value for JSXText child',
110 );
111
112 t.equal(
113 getAccessibleChildText(JSXElementMock(
114 'a',
115 [],
116 [JSXElementMock(
117 'span',
118 [],
119 [{ type: 'Literal', value: 'bar' }],
120 )],
121 ), elementType),
122 'bar',
123 'returns recursive value for JSXElement child',
124 );
125
126 t.equal(
127 getAccessibleChildText(JSXElementMock(
128 'a',
129 [],
130 [JSXElementMock(
131 'span',
132 [],
133 [JSXElementMock(
134 'span',
135 [JSXAttributeMock('aria-hidden', 'true')],
136 )],
137 )],
138 ), elementType),
139 '',
140 'skips children with aria-hidden-true',
141 );
142
143 t.equal(
144 getAccessibleChildText(JSXElementMock(
145 'a',
146 [],
147 [{ type: 'Literal', value: 'foo' }, { type: 'Literal', value: 'bar' }],
148 ), elementType),
149 'foo bar',
150 'joins multiple children properly - no spacing',
151 );
152
153 t.equal(
154 getAccessibleChildText(JSXElementMock(
155 'a',
156 [],
157 [{ type: 'Literal', value: ' foo ' }, { type: 'Literal', value: ' bar ' }],
158 ), elementType),
159 'foo bar',
160 'joins multiple children properly - with spacing',
161 );
162
163 t.equal(
164 getAccessibleChildText(JSXElementMock(
165 'a',
166 [],
167 [{ type: 'Literal', value: 'foo' }, { type: 'Unknown' }, { type: 'Literal', value: 'bar' }],
168 ), elementType),
169 'foo bar',
170 'skips unknown elements',
171 );
172
173 t.end();
174});
Note: See TracBrowser for help on using the repository browser.