Skip to content

Commit

Permalink
Improve error locs for title based rules (#447)
Browse files Browse the repository at this point in the history
* fix(no-identical-title): report on title argument instead of function

* fix(valid-title): report on title argument instead of jest function

* fix(no-empty-title): report on title argument instead of jest function
  • Loading branch information
G-Rath committed Oct 27, 2019
1 parent e9f0503 commit 3f95e2e
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 45 deletions.
16 changes: 8 additions & 8 deletions src/rules/__tests__/no-empty-title.test.ts
Expand Up @@ -25,35 +25,35 @@ ruleTester.run('no-empty-title', rule, {
invalid: [
{
code: 'describe("", function () {})',
errors: [{ messageId: 'describe', column: 1, line: 1 }],
errors: [{ messageId: 'describe', column: 10, line: 1 }],
},
{
code: ["describe('foo', () => {", "it('', () => {})", '})'].join('\n'),
errors: [{ messageId: 'test', column: 1, line: 2 }],
errors: [{ messageId: 'test', column: 4, line: 2 }],
},
{
code: 'it("", function () {})',
errors: [{ messageId: 'test', column: 1, line: 1 }],
errors: [{ messageId: 'test', column: 4, line: 1 }],
},
{
code: 'test("", function () {})',
errors: [{ messageId: 'test', column: 1, line: 1 }],
errors: [{ messageId: 'test', column: 6, line: 1 }],
},
{
code: 'test(``, function () {})',
errors: [{ messageId: 'test', column: 1, line: 1 }],
errors: [{ messageId: 'test', column: 6, line: 1 }],
},
{
code: "xdescribe('', () => {})",
errors: [{ messageId: 'describe', column: 1, line: 1 }],
errors: [{ messageId: 'describe', column: 11, line: 1 }],
},
{
code: "xit('', () => {})",
errors: [{ messageId: 'test', column: 1, line: 1 }],
errors: [{ messageId: 'test', column: 5, line: 1 }],
},
{
code: "xtest('', () => {})",
errors: [{ messageId: 'test', column: 1, line: 1 }],
errors: [{ messageId: 'test', column: 7, line: 1 }],
},
],
});
20 changes: 10 additions & 10 deletions src/rules/__tests__/no-identical-title.test.ts
Expand Up @@ -108,54 +108,54 @@ ruleTester.run('no-identical-title', rule, {
' it("it1", function() {});',
'});',
].join('\n'),
errors: [{ messageId: 'multipleTestTitle', column: 4, line: 3 }],
errors: [{ messageId: 'multipleTestTitle', column: 7, line: 3 }],
},
{
code: ['it("it1", function() {});', 'it("it1", function() {});'].join(
'\n',
),
errors: [{ messageId: 'multipleTestTitle', column: 1, line: 2 }],
errors: [{ messageId: 'multipleTestTitle', column: 4, line: 2 }],
},
{
code: [
'it.only("it1", function() {});',
'it("it1", function() {});',
].join('\n'),
errors: [{ messageId: 'multipleTestTitle', column: 1, line: 2 }],
errors: [{ messageId: 'multipleTestTitle', column: 4, line: 2 }],
},
{
code: ['fit("it1", function() {});', 'it("it1", function() {});'].join(
'\n',
),
errors: [{ messageId: 'multipleTestTitle', column: 1, line: 2 }],
errors: [{ messageId: 'multipleTestTitle', column: 4, line: 2 }],
},
{
code: [
'it.only("it1", function() {});',
'it.only("it1", function() {});',
].join('\n'),
errors: [{ messageId: 'multipleTestTitle', column: 1, line: 2 }],
errors: [{ messageId: 'multipleTestTitle', column: 9, line: 2 }],
},
{
code: [
'describe("describe1", function() {});',
'describe("describe1", function() {});',
].join('\n'),
errors: [{ messageId: 'multipleDescribeTitle', column: 1, line: 2 }],
errors: [{ messageId: 'multipleDescribeTitle', column: 10, line: 2 }],
},
{
code: [
'describe("describe1", function() {});',
'xdescribe("describe1", function() {});',
].join('\n'),
errors: [{ messageId: 'multipleDescribeTitle', column: 1, line: 2 }],
errors: [{ messageId: 'multipleDescribeTitle', column: 11, line: 2 }],
},
{
code: [
'fdescribe("describe1", function() {});',
'describe("describe1", function() {});',
].join('\n'),
errors: [{ messageId: 'multipleDescribeTitle', column: 1, line: 2 }],
errors: [{ messageId: 'multipleDescribeTitle', column: 10, line: 2 }],
},
{
code: [
Expand All @@ -164,7 +164,7 @@ ruleTester.run('no-identical-title', rule, {
'});',
'describe("describe1", function() {});',
].join('\n'),
errors: [{ messageId: 'multipleDescribeTitle', column: 1, line: 4 }],
errors: [{ messageId: 'multipleDescribeTitle', column: 10, line: 4 }],
},
{
code: [
Expand All @@ -173,7 +173,7 @@ ruleTester.run('no-identical-title', rule, {
' it(`testing backticks with the same title`, () => {});',
'});',
].join('\n'),
errors: [{ messageId: 'multipleTestTitle', column: 5, line: 3 }],
errors: [{ messageId: 'multipleTestTitle', column: 8, line: 3 }],
},
],
});
40 changes: 20 additions & 20 deletions src/rules/__tests__/valid-title.test.ts
Expand Up @@ -32,51 +32,51 @@ ruleTester.run('no-accidental-space', rule, {
invalid: [
{
code: 'describe(" foo", function () {})',
errors: [{ messageId: 'accidentalSpace', column: 1, line: 1 }],
errors: [{ messageId: 'accidentalSpace', column: 10, line: 1 }],
},
{
code: 'fdescribe(" foo", function () {})',
errors: [{ messageId: 'accidentalSpace', column: 1, line: 1 }],
errors: [{ messageId: 'accidentalSpace', column: 11, line: 1 }],
},
{
code: 'xdescribe(" foo", function () {})',
errors: [{ messageId: 'accidentalSpace', column: 1, line: 1 }],
errors: [{ messageId: 'accidentalSpace', column: 11, line: 1 }],
},
{
code: 'it(" foo", function () {})',
errors: [{ messageId: 'accidentalSpace', column: 1, line: 1 }],
errors: [{ messageId: 'accidentalSpace', column: 4, line: 1 }],
},
{
code: 'fit(" foo", function () {})',
errors: [{ messageId: 'accidentalSpace', column: 1, line: 1 }],
errors: [{ messageId: 'accidentalSpace', column: 5, line: 1 }],
},
{
code: 'xit(" foo", function () {})',
errors: [{ messageId: 'accidentalSpace', column: 1, line: 1 }],
errors: [{ messageId: 'accidentalSpace', column: 5, line: 1 }],
},
{
code: 'test(" foo", function () {})',
errors: [{ messageId: 'accidentalSpace', column: 1, line: 1 }],
errors: [{ messageId: 'accidentalSpace', column: 6, line: 1 }],
},
{
code: 'xtest(" foo", function () {})',
errors: [{ messageId: 'accidentalSpace', column: 1, line: 1 }],
errors: [{ messageId: 'accidentalSpace', column: 7, line: 1 }],
},
{
code: `
describe(' foo', () => {
it('bar', () => {})
})
`,
errors: [{ messageId: 'accidentalSpace', column: 7, line: 2 }],
errors: [{ messageId: 'accidentalSpace', column: 16, line: 2 }],
},
{
code: `
describe('foo', () => {
it(' bar', () => {})
})
`,
errors: [{ messageId: 'accidentalSpace', column: 9, line: 3 }],
errors: [{ messageId: 'accidentalSpace', column: 12, line: 3 }],
},
],
});
Expand All @@ -90,15 +90,15 @@ ruleTester.run('no-duplicate-prefix ft describe', rule, {
invalid: [
{
code: 'describe("describe foo", function () {})',
errors: [{ messageId: 'duplicatePrefix', column: 1, line: 1 }],
errors: [{ messageId: 'duplicatePrefix', column: 10, line: 1 }],
},
{
code: 'fdescribe("describe foo", function () {})',
errors: [{ messageId: 'duplicatePrefix', column: 1, line: 1 }],
errors: [{ messageId: 'duplicatePrefix', column: 11, line: 1 }],
},
{
code: 'xdescribe("describe foo", function () {})',
errors: [{ messageId: 'duplicatePrefix', column: 1, line: 1 }],
errors: [{ messageId: 'duplicatePrefix', column: 11, line: 1 }],
},
],
});
Expand All @@ -108,11 +108,11 @@ ruleTester.run('no-duplicate-prefix ft test', rule, {
invalid: [
{
code: 'test("test foo", function () {})',
errors: [{ messageId: 'duplicatePrefix', column: 1, line: 1 }],
errors: [{ messageId: 'duplicatePrefix', column: 6, line: 1 }],
},
{
code: 'xtest("test foo", function () {})',
errors: [{ messageId: 'duplicatePrefix', column: 1, line: 1 }],
errors: [{ messageId: 'duplicatePrefix', column: 7, line: 1 }],
},
],
});
Expand All @@ -126,15 +126,15 @@ ruleTester.run('no-duplicate-prefix ft it', rule, {
invalid: [
{
code: 'it("it foo", function () {})',
errors: [{ messageId: 'duplicatePrefix', column: 1, line: 1 }],
errors: [{ messageId: 'duplicatePrefix', column: 4, line: 1 }],
},
{
code: 'fit("it foo", function () {})',
errors: [{ messageId: 'duplicatePrefix', column: 1, line: 1 }],
errors: [{ messageId: 'duplicatePrefix', column: 5, line: 1 }],
},
{
code: 'xit("it foo", function () {})',
errors: [{ messageId: 'duplicatePrefix', column: 1, line: 1 }],
errors: [{ messageId: 'duplicatePrefix', column: 5, line: 1 }],
},
],
});
Expand All @@ -152,14 +152,14 @@ ruleTester.run('no-duplicate-prefix ft nested', rule, {
describe('describe foo', () => {
it('bar', () => {})
})`,
errors: [{ messageId: 'duplicatePrefix', column: 7, line: 2 }],
errors: [{ messageId: 'duplicatePrefix', column: 16, line: 2 }],
},
{
code: `
describe('foo', () => {
it('it bar', () => {})
})`,
errors: [{ messageId: 'duplicatePrefix', column: 9, line: 3 }],
errors: [{ messageId: 'duplicatePrefix', column: 12, line: 3 }],
},
],
});
6 changes: 3 additions & 3 deletions src/rules/no-empty-title.ts
Expand Up @@ -29,16 +29,16 @@ export default createRule({
if (!isDescribe(node) && !isTestCase(node)) {
return;
}
const [firstArgument] = node.arguments;
if (!firstArgument || !isStringNode(firstArgument, '')) {
const [argument] = node.arguments;
if (!argument || !isStringNode(argument, '')) {
return;
}

context.report({
messageId: isDescribe(node)
? DescribeAlias.describe
: TestCaseName.test,
node,
node: argument,
});
},
};
Expand Down
10 changes: 8 additions & 2 deletions src/rules/no-identical-title.ts
Expand Up @@ -51,7 +51,10 @@ export default createRule({

if (isTestCase(node)) {
if (currentLayer.testTitles.includes(title)) {
context.report({ messageId: 'multipleTestTitle', node });
context.report({
messageId: 'multipleTestTitle',
node: argument,
});
}
currentLayer.testTitles.push(title);
}
Expand All @@ -60,7 +63,10 @@ export default createRule({
return;
}
if (currentLayer.describeTitles.includes(title)) {
context.report({ messageId: 'multipleDescribeTitle', node });
context.report({
messageId: 'multipleDescribeTitle',
node: argument,
});
}
currentLayer.describeTitles.push(title);
},
Expand Down
4 changes: 2 additions & 2 deletions src/rules/valid-title.ts
Expand Up @@ -49,7 +49,7 @@ export default createRule({
if (title.trimLeft().length !== title.length) {
context.report({
messageId: 'accidentalSpace',
node,
node: argument,
});
}

Expand All @@ -59,7 +59,7 @@ export default createRule({
if (firstWord.toLowerCase() === nodeName) {
context.report({
messageId: 'duplicatePrefix',
node,
node: argument,
});
}
},
Expand Down

0 comments on commit 3f95e2e

Please sign in to comment.