/* eslint-env jest */ /** * @fileoverview Enforce links may not point to just #. * @author Ethan Cohen */ // ----------------------------------------------------------------------------- // Requirements // ----------------------------------------------------------------------------- import { RuleTester } from 'eslint'; import parserOptionsMapper from '../../__util__/parserOptionsMapper'; import rule from '../../../src/rules/href-no-hash'; // ----------------------------------------------------------------------------- // Tests // ----------------------------------------------------------------------------- const ruleTester = new RuleTester(); const expectedError = { message: 'Links must not point to "#". Use a more descriptive href or use a button instead.', type: 'JSXOpeningElement', }; const components = [{ components: ['Anchor', 'Link'], }]; const specialLink = [{ specialLink: ['hrefLeft', 'hrefRight'], }]; const componentsAndSpecialLink = [{ components: ['Anchor'], specialLink: ['hrefLeft'], }]; ruleTester.run('href-no-hash', rule, { valid: [ // DEFAULT ELEMENT 'a' TESTS { code: ';' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '
' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: 'test' }, { code: '' }, // CUSTOM ELEMENT TEST FOR ARRAY OPTION { code: ';', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '
', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: ';', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '
', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, { code: '', options: components }, // CUSTOM PROP TESTS { code: ';', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '
', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: 'test', options: specialLink }, { code: '', options: specialLink }, { code: ';', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '
', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: '', options: specialLink }, { code: 'test', options: specialLink }, { code: '', options: specialLink }, // CUSTOM BOTH COMPONENTS AND SPECIALLINK TESTS { code: ';', options: componentsAndSpecialLink }, { code: '', options: componentsAndSpecialLink }, { code: '', options: componentsAndSpecialLink }, { code: '', options: componentsAndSpecialLink }, { code: '', options: componentsAndSpecialLink }, { code: '', options: componentsAndSpecialLink }, { code: '
', options: componentsAndSpecialLink }, { code: '', options: componentsAndSpecialLink }, { code: '', options: componentsAndSpecialLink }, { code: '', options: componentsAndSpecialLink }, { code: '', options: componentsAndSpecialLink }, { code: '', options: componentsAndSpecialLink }, { code: 'test', options: componentsAndSpecialLink }, ].map(parserOptionsMapper), invalid: [ // DEFAULT ELEMENT 'a' TESTS { code: '', errors: [expectedError] }, { code: '', errors: [expectedError] }, { code: '', errors: [expectedError] }, // CUSTOM ELEMENT TEST FOR ARRAY OPTION { code: '', errors: [expectedError], options: components }, { code: '', errors: [expectedError], options: components }, { code: '', errors: [expectedError], options: components, }, { code: '', errors: [expectedError], options: components }, { code: '', errors: [expectedError], options: components }, { code: '', errors: [expectedError], options: components, }, // CUSTOM PROP TESTS { code: '', errors: [expectedError], options: specialLink }, { code: '', errors: [expectedError], options: specialLink }, { code: '', errors: [expectedError], options: specialLink, }, { code: '', errors: [expectedError], options: specialLink }, { code: '', errors: [expectedError], options: specialLink }, { code: '', errors: [expectedError], options: specialLink, }, // CUSTOM BOTH COMPONENTS AND SPECIALLINK TESTS { code: '', errors: [expectedError], options: componentsAndSpecialLink }, { code: '', errors: [expectedError], options: componentsAndSpecialLink }, { code: '', errors: [expectedError], options: componentsAndSpecialLink, }, ].map(parserOptionsMapper), });