/* eslint-env jest */
/**
* @fileoverview Disallow inherently non-interactive elements to be assigned
* interactive roles.
* @author Jesse Beach
* @author $AUTHOR
*/
// -----------------------------------------------------------------------------
// Requirements
// -----------------------------------------------------------------------------
import { RuleTester } from 'eslint';
import { configs } from '../../../src/index';
import parserOptionsMapper from '../../__util__/parserOptionsMapper';
import rule from '../../../src/rules/no-noninteractive-element-to-interactive-role';
import ruleOptionsMapperFactory from '../../__util__/ruleOptionsMapperFactory';
// -----------------------------------------------------------------------------
// Tests
// -----------------------------------------------------------------------------
const ruleTester = new RuleTester();
const errorMessage =
'Non-interactive elements should not be assigned interactive roles.';
const expectedError = {
message: errorMessage,
type: 'JSXAttribute',
};
const ruleName = 'jsx-a11y/no-noninteractive-element-to-interactive-role';
const alwaysValid = [
{ code: '' },
{ code: '' },
/* Interactive elements */
{ code: '' },
{ code: '' },
{ code: '' },
{ code: ';' },
{ code: ';' },
{ code: '' },
/* All flavors of input */
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
/* End all flavors of input */
{ code: ';' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '
;' },
{ code: '
;' },
/* Interactive elements */
{ code: '' },
{ code: '' },
{ code: '' },
/* All flavors of input */
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
/* End all flavors of input */
{ code: ';' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '
;' },
/* Interactive elements */
{ code: '' },
{ code: '' },
{ code: '' },
/* All flavors of input */
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '' },
/* End all flavors of input */
{ code: ';' },
{ code: '' },
{ code: '' },
{ code: '' },
{ code: '
;' },
/* HTML elements with neither an interactive or non-interactive valence (static) */
{ code: ';' },
{ code: ';' },
{ code: ';' },
{ code: ';' },
{ code: ';' },
{ code: ';' },
{ code: ';' },
{ code: ';' },
{ code: ';' },
{ code: ';' },
{ code: ';' },
{ code: '