diff --git a/packages/experimental-utils/tests/eslint-utils/RuleCreator.test.ts b/packages/experimental-utils/tests/eslint-utils/RuleCreator.test.ts new file mode 100644 index 00000000000..343d5f0e1aa --- /dev/null +++ b/packages/experimental-utils/tests/eslint-utils/RuleCreator.test.ts @@ -0,0 +1,46 @@ +import { ESLintUtils } from '../../src'; + +describe('RuleCreator', () => { + const createRule = ESLintUtils.RuleCreator(name => `test/${name}`); + + it('createRule should be a function', () => { + expect(typeof createRule).toEqual('function'); + }); + + it('should create rule correctly', () => { + const rule = createRule({ + name: 'test', + meta: { + docs: { + description: 'some description', + category: 'Best Practices', + recommended: 'error', + requiresTypeChecking: true, + }, + messages: { + foo: 'some message', + }, + schema: [], + type: 'problem', + }, + defaultOptions: [], + create() { + return {}; + }, + }); + expect(rule.meta).toEqual({ + docs: { + description: 'some description', + category: 'Best Practices', + url: 'test/test', + recommended: 'error', + requiresTypeChecking: true, + }, + messages: { + foo: 'some message', + }, + schema: [], + type: 'problem', + }); + }); +}); diff --git a/packages/experimental-utils/tests/eslint-utils/applyDefault.test.ts b/packages/experimental-utils/tests/eslint-utils/applyDefault.test.ts index c3304ec4871..ec9411c31c2 100644 --- a/packages/experimental-utils/tests/eslint-utils/applyDefault.test.ts +++ b/packages/experimental-utils/tests/eslint-utils/applyDefault.test.ts @@ -1,10 +1,10 @@ -import * as util from '../../src/eslint-utils/applyDefault'; +import { ESLintUtils } from '../../src'; describe('applyDefault', () => { it('returns a clone of the default if no options given', () => { const defaults = [{ prop: 'setting' }]; const user = null; - const result = util.applyDefault(defaults, user); + const result = ESLintUtils.applyDefault(defaults, user); expect(result).toStrictEqual(defaults); expect(result).not.toBe(defaults); @@ -26,7 +26,7 @@ describe('applyDefault', () => { other: 'something', }, ]; - const result = util.applyDefault(defaults, user); + const result = ESLintUtils.applyDefault(defaults, user); expect(result).toStrictEqual([ { @@ -44,9 +44,19 @@ describe('applyDefault', () => { it('returns a brand new array', () => { const defaults: undefined[] = []; const user: undefined[] = []; - const result = util.applyDefault(defaults, user); + const result = ESLintUtils.applyDefault(defaults, user); expect(result).not.toBe(defaults); expect(result).not.toBe(user); }); + + it('should work with array of options', () => { + const defaults: unknown[] = ['1tbs']; + const user: unknown[] = ['2tbs']; + const result = ESLintUtils.applyDefault(defaults, user); + + expect(result).toStrictEqual(['2tbs']); + expect(result).not.toBe(defaults); + expect(result).not.toBe(user); + }); }); diff --git a/packages/experimental-utils/tests/eslint-utils/batchedSingleLineTests.test.ts b/packages/experimental-utils/tests/eslint-utils/batchedSingleLineTests.test.ts new file mode 100644 index 00000000000..596bb480b94 --- /dev/null +++ b/packages/experimental-utils/tests/eslint-utils/batchedSingleLineTests.test.ts @@ -0,0 +1,81 @@ +import { ESLintUtils } from '../../src'; + +describe('batchedSingleLineTests', () => { + const FIXTURES = ` +a +b +c + `; + const errors = [ + { messageId: 'someMessage1', line: 2 }, + { messageId: 'someMessage2', line: 3 }, + { messageId: 'someMessage3', line: 4 }, + ]; + const options = [{ optionOne: 'value' }]; + + it('should work without options', () => { + expect( + ESLintUtils.batchedSingleLineTests({ + code: FIXTURES, + }), + ).toEqual([ + { code: 'a', errors: [] }, + { code: 'b', errors: [] }, + { code: 'c', errors: [] }, + ]); + }); + + it('should work with errors', () => { + expect( + ESLintUtils.batchedSingleLineTests({ + code: FIXTURES, + errors, + }), + ).toEqual([ + { code: 'a', errors: [{ messageId: 'someMessage1', line: 1 }] }, + { code: 'b', errors: [{ messageId: 'someMessage2', line: 1 }] }, + { code: 'c', errors: [{ messageId: 'someMessage3', line: 1 }] }, + ]); + }); + + it('should work with all fields', () => { + const filename = 'foo.ts'; + const parser = 'some-parser'; + + expect( + ESLintUtils.batchedSingleLineTests({ + code: FIXTURES, + errors, + options, + parser, + output: FIXTURES, + filename, + }), + ).toEqual([ + { + code: 'a', + output: 'a', + errors: [{ messageId: 'someMessage1', line: 1 }], + parser, + filename, + options, + }, + { + code: 'b', + output: 'b', + errors: [{ messageId: 'someMessage2', line: 1 }], + parser, + filename, + options, + }, + { + code: 'c', + output: 'c', + errors: [{ messageId: 'someMessage3', line: 1 }], + parser, + filename, + options, + }, + ]); + }); +}); diff --git a/packages/experimental-utils/tests/eslint-utils/deepMerge.test.ts b/packages/experimental-utils/tests/eslint-utils/deepMerge.test.ts index 7caee854d49..26fb02e3bc4 100644 --- a/packages/experimental-utils/tests/eslint-utils/deepMerge.test.ts +++ b/packages/experimental-utils/tests/eslint-utils/deepMerge.test.ts @@ -1,10 +1,10 @@ -import * as util from '../../src/eslint-utils/deepMerge'; +import { ESLintUtils } from '../../src'; describe('deepMerge', () => { it('creates a brand new object', () => { const a = {}; const b = {}; - const result = util.deepMerge(a, b); + const result = ESLintUtils.deepMerge(a, b); expect(result).not.toBe(a); expect(result).not.toBe(b); @@ -38,7 +38,7 @@ describe('deepMerge', () => { }, }; - expect(util.deepMerge(a, b)).toStrictEqual(Object.assign({}, a, b)); + expect(ESLintUtils.deepMerge(a, b)).toStrictEqual(Object.assign({}, a, b)); }); it('deeply overwrites properties in the first one with the second', () => { @@ -53,6 +53,6 @@ describe('deepMerge', () => { }, }; - expect(util.deepMerge(a, b)).toStrictEqual(b); + expect(ESLintUtils.deepMerge(a, b)).toStrictEqual(b); }); });