Skip to content

Commit 4f99df9

Browse files
authored
fix(prefer-empty): don't report on non empty template strings in to-be-empty (#70)
1 parent fec13f6 commit 4f99df9

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@
4343
"eslintConfig": {
4444
"extends": "./node_modules/kcd-scripts/eslint.js",
4545
"rules": {
46-
"babel/quotes": "off"
46+
"babel/quotes": "off",
47+
"max-lines-per-function": "off"
4748
}
4849
},
4950
"eslintIgnore": [

src/__tests__/lib/rules/prefer-empty.js

+22-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable no-template-curly-in-string */
12
/**
23
* @fileoverview Prefer toBeEmptyDOMElement over checking innerHTML
34
* @author Ben Monro
@@ -14,13 +15,15 @@ import * as rule from "../../../rules/prefer-empty";
1415
// Tests
1516
//------------------------------------------------------------------------------
1617

17-
const ruleTester = new RuleTester();
18+
const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2015 } });
1819
ruleTester.run("prefer-empty", rule, {
1920
valid: [
2021
`expect(element.innerHTML).toBe('foo')`,
2122
`expect(element.innerHTML).toBe(foo)`,
2223
`expect(element.innerHTML).not.toBe('foo')`,
2324
`expect(element.innerHTML).not.toBe(foo)`,
25+
"expect(statusText.innerHTML).toBe(`${value}%`)",
26+
"expect(statusText.innerHTML).not.toBe(`${value}%`)",
2427
`expect(element.firstChild).toBe('foo')`,
2528
`expect(element.firstChild).not.toBe('foo')`,
2629
`expect(getByText("foo").innerHTML).toBe('foo')`,
@@ -104,6 +107,15 @@ ruleTester.run("prefer-empty", rule, {
104107
],
105108
output: `expect(element).toBeEmptyDOMElement()`,
106109
},
110+
{
111+
code: "expect(element.innerHTML).toBe(``)",
112+
errors: [
113+
{
114+
message: "Use toBeEmptyDOMElement instead of checking inner html.",
115+
},
116+
],
117+
output: `expect(element).toBeEmptyDOMElement()`,
118+
},
107119

108120
{
109121
code: `expect(element.innerHTML).toBe(null)`,
@@ -133,6 +145,15 @@ ruleTester.run("prefer-empty", rule, {
133145
],
134146
output: `expect(element).not.toBeEmptyDOMElement()`,
135147
},
148+
{
149+
code: "expect(element.innerHTML).not.toBe(``)",
150+
errors: [
151+
{
152+
message: "Use toBeEmptyDOMElement instead of checking inner html.",
153+
},
154+
],
155+
output: `expect(element).not.toBeEmptyDOMElement()`,
156+
},
136157

137158
{
138159
code: `expect(element.firstChild).toBeNull()`,

src/rules/prefer-empty.js

+10-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,11 @@ export const create = (context) => ({
5656
node
5757
) {
5858
const args = node.parent.parent.parent.arguments[0];
59-
if (args.value || args.name) {
59+
if (
60+
args.value ||
61+
args.name ||
62+
(args.expressions && args.expressions.length)
63+
) {
6064
return;
6165
}
6266

@@ -74,7 +78,11 @@ export const create = (context) => ({
7478
node
7579
) {
7680
const args = node.parent.parent.parent.parent.arguments[0];
77-
if (args.value || args.name) {
81+
if (
82+
args.value ||
83+
args.name ||
84+
(args.expressions && args.expressions.length)
85+
) {
7886
return;
7987
}
8088

0 commit comments

Comments
 (0)