60 lines
1.4 KiB
JavaScript
60 lines
1.4 KiB
JavaScript
import test from 'tape';
|
|
import { elementType } from 'jsx-ast-utils';
|
|
|
|
import isInteractiveRole from '../../../src/util/isInteractiveRole';
|
|
import {
|
|
genElementSymbol,
|
|
genInteractiveRoleElements,
|
|
genNonInteractiveRoleElements,
|
|
} from '../../../__mocks__/genInteractives';
|
|
|
|
test('isInteractiveRole', (t) => {
|
|
t.equal(
|
|
isInteractiveRole(undefined, []),
|
|
false,
|
|
'identifies JSX Components (no tagName) as interactive role elements',
|
|
);
|
|
|
|
t.test('elements with a non-interactive role', (st) => {
|
|
genNonInteractiveRoleElements().forEach(({ openingElement }) => {
|
|
const { attributes } = openingElement;
|
|
|
|
st.equal(
|
|
isInteractiveRole(
|
|
elementType(openingElement),
|
|
attributes,
|
|
),
|
|
false,
|
|
`does NOT identify \`${genElementSymbol(openingElement)}\` as an interactive role element`,
|
|
);
|
|
});
|
|
|
|
st.end();
|
|
});
|
|
|
|
t.equal(
|
|
isInteractiveRole('div', []),
|
|
false,
|
|
'does NOT identify elements without a role as interactive role elements',
|
|
);
|
|
|
|
t.test('elements with an interactive role', (st) => {
|
|
genInteractiveRoleElements().forEach(({ openingElement }) => {
|
|
const { attributes } = openingElement;
|
|
|
|
st.equal(
|
|
isInteractiveRole(
|
|
elementType(openingElement),
|
|
attributes,
|
|
),
|
|
true,
|
|
`identifies \`${genElementSymbol(openingElement)}\` as an interactive role element`,
|
|
);
|
|
});
|
|
|
|
st.end();
|
|
});
|
|
|
|
t.end();
|
|
});
|