/** * @fileoverview Enforce elements are not used. * @author Ethan Cohen */ // ----------------------------------------------------------------------------- // Requirements // ----------------------------------------------------------------------------- import { RuleTester } from 'eslint'; import parserOptionsMapper from '../../__util__/parserOptionsMapper'; import rule from '../../../src/rules/accessible-emoji'; import parsers from '../../__util__/helpers/parsers'; // ----------------------------------------------------------------------------- // Tests // ----------------------------------------------------------------------------- const ruleTester = new RuleTester(); const expectedError = { message: 'Emojis should be wrapped in , have role="img", and have an accessible description with aria-label or aria-labelledby.', type: 'JSXOpeningElement', }; ruleTester.run('accessible-emoji', rule, { valid: parsers.all([].concat( { code: '
;' }, { code: '' }, { code: 'No emoji here!' }, { code: '๐Ÿผ' }, { code: '' }, { code: '๐Ÿผ' }, { code: '' }, { code: '' }, { code: '{props.emoji}' }, { code: '{props.emoji}' }, { code: '' }, { code: '๐Ÿผ' }, { code: '' }, { code: '๐Ÿผ' }, { code: '๐Ÿผ', settings: { 'jsx-a11y': { components: { CustomInput: 'input' } } }, }, { code: '๐Ÿผ', settings: { 'jsx-a11y': { polymorphicPropName: 'as' } }, }, )).map(parserOptionsMapper), invalid: parsers.all([].concat( { code: '๐Ÿผ', errors: [expectedError] }, { code: 'foo๐Ÿผbar', errors: [expectedError] }, { code: 'foo ๐Ÿผ bar', errors: [expectedError] }, { code: '๐Ÿผ', errors: [expectedError] }, { code: '๐Ÿผ', errors: [expectedError] }, { code: '๐Ÿผ', errors: [expectedError] }, { code: '๐Ÿผ', errors: [expectedError] }, { code: '๐Ÿผ', errors: [expectedError] }, { code: '๐Ÿผ', settings: { 'jsx-a11y': { polymorphicPropName: 'as' } }, errors: [expectedError], }, )).map(parserOptionsMapper), });