From 6f904f0d3cbdd878d8151f69b606253f3be9ae98 Mon Sep 17 00:00:00 2001 From: Will Douglas Date: Mon, 11 Nov 2019 16:29:53 -0700 Subject: [PATCH] New: Support output option for rule-tester tests of suggestions --- lib/rule-tester/rule-tester.js | 7 +++++++ tests/lib/rules/no-useless-escape.js | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index 97064466f85..bbb62d78884 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -612,6 +612,13 @@ class RuleTester { assertSuggestionKeyEquals("desc"); assertSuggestionKeyEquals("messageId"); assertSuggestionKeyEquals("fix"); + + if (hasOwnProperty(expectedSuggestion, "output")) { + const fix = actualSuggestion.fix; + const codeWithAppliedSuggestion = item.code.slice(0, fix.range[0]) + fix.text + item.code.slice(fix.range[1]); + + assert.strictEqual(codeWithAppliedSuggestion, expectedSuggestion.output, "Expected the applied suggestion fix to match the test suggestion output"); + } }); } } else { diff --git a/tests/lib/rules/no-useless-escape.js b/tests/lib/rules/no-useless-escape.js index 4b8bd11c78d..0bd34b6b70b 100644 --- a/tests/lib/rules/no-useless-escape.js +++ b/tests/lib/rules/no-useless-escape.js @@ -154,10 +154,10 @@ ruleTester.run("no-useless-escape", rule, { type: "Literal", suggestions: [{ messageId: "removeEscape", - fix: { range: [11, 12], text: "" } + output: "var foo = /;/;" }, { messageId: "escapeBackslash", - fix: { range: [11, 11], text: "\\" } + output: "var foo = /\\\\;/;" }] }] }, @@ -171,10 +171,10 @@ ruleTester.run("no-useless-escape", rule, { type: "Literal", suggestions: [{ messageId: "removeEscape", - fix: { range: [11, 12], text: "" } + output: "var foo = \"'\";" }, { messageId: "escapeBackslash", - fix: { range: [11, 11], text: "\\" } + output: "var foo = \"\\\\'\";" }] }] },