/* eslint-env jest */ /** * @fileoverview Enforce non-interactive elements have no interactive handlers. * @author Ethan Cohen */ // ----------------------------------------------------------------------------- // Requirements // ----------------------------------------------------------------------------- import { RuleTester } from 'eslint'; import { configs } from '../../../src/index'; import parserOptionsMapper from '../../__util__/parserOptionsMapper'; import rule from '../../../src/rules/no-noninteractive-element-interactions'; import ruleOptionsMapperFactory from '../../__util__/ruleOptionsMapperFactory'; // ----------------------------------------------------------------------------- // Tests // ----------------------------------------------------------------------------- const ruleTester = new RuleTester(); const errorMessage = 'Non-interactive elements should not be assigned mouse or keyboard event listeners.'; const expectedError = { message: errorMessage, type: 'JSXOpeningElement', }; const ruleName = 'no-noninteractive-element-interactions'; const alwaysValid = [ { code: '' }, { code: '' }, /* All flavors of input */ { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, { code: ' void 0} />' }, /* End all flavors of input */ { code: ' void 0} />' }, { code: ' {}} />;' }, { code: ' void 0} />' }, { code: ' void 0} href="http://x.y.z" />' }, { code: ' void 0} href="http://x.y.z" tabIndex="0" />' }, { code: ' {}} />;' }, { code: ' void 0} className="foo" />' }, { code: ' {}} />;' }, { code: ' void 0} className="foo" />' }, { code: ' void 0} className="foo" />' }, { code: ' void 0} className="foo" />' }, { code: ' {}} />;' }, /* HTML elements with neither an interactive or non-interactive valence (static) */ { code: ' {}} />;' }, { code: ' {}} />;' }, { code: ' {}} />;' }, { code: '