home1022
This commit is contained in:
Generated
Vendored
+174
@@ -0,0 +1,174 @@
|
||||
import test from 'tape';
|
||||
import { elementType } from 'jsx-ast-utils';
|
||||
|
||||
import getAccessibleChildText from '../../../src/util/getAccessibleChildText';
|
||||
import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock';
|
||||
import JSXElementMock from '../../../__mocks__/JSXElementMock';
|
||||
|
||||
test('getAccessibleChildText', (t) => {
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[JSXAttributeMock('aria-label', 'foo')],
|
||||
), elementType),
|
||||
'foo',
|
||||
'returns the aria-label when present',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[JSXAttributeMock('aria-label', 'foo')],
|
||||
[{ type: 'JSXText', value: 'bar' }],
|
||||
), elementType),
|
||||
'foo',
|
||||
'returns the aria-label instead of children',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[JSXAttributeMock('aria-hidden', 'true')],
|
||||
), elementType),
|
||||
'',
|
||||
'skips elements with aria-hidden=true',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[{ type: 'JSXText', value: 'bar' }],
|
||||
), elementType),
|
||||
'bar',
|
||||
'returns literal value for JSXText child',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[JSXElementMock('img', [
|
||||
JSXAttributeMock('src', 'some/path'),
|
||||
JSXAttributeMock('alt', 'a sensible label'),
|
||||
])],
|
||||
), elementType),
|
||||
'a sensible label',
|
||||
'returns alt text for img child',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[JSXElementMock('span', [
|
||||
JSXAttributeMock('alt', 'a sensible label'),
|
||||
])],
|
||||
), elementType),
|
||||
'',
|
||||
'returns blank when alt tag is used on arbitrary element',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[{ type: 'Literal', value: 'bar' }],
|
||||
), elementType),
|
||||
'bar',
|
||||
'returns literal value for JSXText child',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[{ type: 'Literal', value: ' bar ' }],
|
||||
), elementType),
|
||||
'bar',
|
||||
'returns trimmed literal value for JSXText child',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[{ type: 'Literal', value: 'foo bar' }],
|
||||
), elementType),
|
||||
'foo bar',
|
||||
'returns space-collapsed literal value for JSXText child',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[{ type: 'Literal', value: 'foo, bar. baz? foo; bar:' }],
|
||||
), elementType),
|
||||
'foo bar baz foo bar',
|
||||
'returns punctuation-stripped literal value for JSXText child',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[JSXElementMock(
|
||||
'span',
|
||||
[],
|
||||
[{ type: 'Literal', value: 'bar' }],
|
||||
)],
|
||||
), elementType),
|
||||
'bar',
|
||||
'returns recursive value for JSXElement child',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[JSXElementMock(
|
||||
'span',
|
||||
[],
|
||||
[JSXElementMock(
|
||||
'span',
|
||||
[JSXAttributeMock('aria-hidden', 'true')],
|
||||
)],
|
||||
)],
|
||||
), elementType),
|
||||
'',
|
||||
'skips children with aria-hidden-true',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[{ type: 'Literal', value: 'foo' }, { type: 'Literal', value: 'bar' }],
|
||||
), elementType),
|
||||
'foo bar',
|
||||
'joins multiple children properly - no spacing',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[{ type: 'Literal', value: ' foo ' }, { type: 'Literal', value: ' bar ' }],
|
||||
), elementType),
|
||||
'foo bar',
|
||||
'joins multiple children properly - with spacing',
|
||||
);
|
||||
|
||||
t.equal(
|
||||
getAccessibleChildText(JSXElementMock(
|
||||
'a',
|
||||
[],
|
||||
[{ type: 'Literal', value: 'foo' }, { type: 'Unknown' }, { type: 'Literal', value: 'bar' }],
|
||||
), elementType),
|
||||
'foo bar',
|
||||
'skips unknown elements',
|
||||
);
|
||||
|
||||
t.end();
|
||||
});
|
||||
Reference in New Issue
Block a user