/* eslint-env jest */ /** * @fileoverview Enforce aria role attribute is valid. * @author Ethan Cohen */ // ----------------------------------------------------------------------------- // Requirements // ----------------------------------------------------------------------------- import { roles } from 'aria-query'; import { RuleTester } from 'eslint'; import parserOptionsMapper from '../../__util__/parserOptionsMapper'; import rule from '../../../src/rules/aria-role'; // ----------------------------------------------------------------------------- // Tests // ----------------------------------------------------------------------------- const ruleTester = new RuleTester(); const errorMessage = { message: 'Elements with ARIA roles must use a valid, non-abstract ARIA role.', type: 'JSXAttribute', }; const validRoles = [...roles.keys()].filter( role => roles.get(role).abstract === false, ); const invalidRoles = [...roles.keys()].filter( role => roles.get(role).abstract === true, ); const createTests = roleNames => roleNames.map(role => ({ code: `
`, })); const validTests = createTests(validRoles); const invalidTests = createTests(invalidRoles).map((test) => { const invalidTest = Object.assign({}, test); invalidTest.errors = [errorMessage]; return invalidTest; }); const ignoreNonDOMSchema = [{ ignoreNonDOM: true, }]; ruleTester.run('aria-role', rule, { valid: [ // Variables should pass, as we are only testing literals. { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '