UNPKG

eslint-plugin-logical-properties

Version:
59 lines (58 loc) 2.21 kB
import { generateObjectStringTestCases } from '../utils/propertyTraverse.utils.js'; import { generateDirectionalShorthandError } from './directionalShorthand.js'; import { generateShorthandMappings } from './directionalShorthandMapping.js'; export const directionalShorthandMappingTestGenerator = ({ testName: inputTestName, options: inputOptions, config: { shorthandMappings }, }) => { if (!shorthandMappings) { return { valid: [], invalid: [], }; } const { functions: functionNames = [], resolvers = [] } = inputOptions; const options = [inputOptions]; const { valid, invalid } = { valid: [], invalid: [], }; const testName = `${inputTestName}ShorthandMapping`; for (const functionName of functionNames) { const testCaseGenerator = generateObjectStringTestCases.bind(undefined, { testName, functionName, resolvers, }); const inputs = [ 'awesome', 'awesome sauce', 'awesome sauce text', ]; for (const input of inputs) { for (const [property, propertyMappings] of Object.entries(shorthandMappings)) { const quotesSet = [ '"', '\'', '`', ]; for (const quote of quotesSet) { const value = `${quote}${input} => ${functionName}${quote}`; const source = `"${property}":${value}`; const results = generateShorthandMappings(value, propertyMappings); const invalidInputs = testCaseGenerator({ input: `{${source}}`, output: `{${results.join(',')}}`, }); invalid.push(...invalidInputs.map(({ code, output }) => ({ code, options, errors: [{ message: generateDirectionalShorthandError(source, results) }], output, }))); } } } } return { valid, invalid, }; };