@@ -93,36 +93,87 @@ ruleTester.run('jsx-no-leaked-render', rule, {
93
93
` ,
94
94
} ,
95
95
{
96
- options : [ { validStrategies : [ 'ternary' ] } ] ,
97
96
code : `
98
97
const Component = ({ elements, count }) => {
99
98
return <div>{count ? <List elements={elements}/> : null}</div>
100
99
}
101
100
` ,
101
+ options : [ { validStrategies : [ 'ternary' ] } ] ,
102
102
} ,
103
103
{
104
- options : [ { validStrategies : [ 'coerce' ] } ] ,
105
104
code : `
106
105
const Component = ({ elements, count }) => {
107
106
return <div>{!!count && <List elements={elements}/>}</div>
108
107
}
109
108
` ,
109
+ options : [ { validStrategies : [ 'coerce' ] } ] ,
110
110
} ,
111
111
{
112
- options : [ { validStrategies : [ 'coerce' , 'ternary' ] } ] ,
113
112
code : `
114
113
const Component = ({ elements, count }) => {
115
114
return <div>{count ? <List elements={elements}/> : null}</div>
116
115
}
117
116
` ,
117
+ options : [ { validStrategies : [ 'coerce' , 'ternary' ] } ] ,
118
118
} ,
119
119
{
120
+ code : `
121
+ const Component = ({ elements, count }) => {
122
+ return <div>{!!count && <List elements={elements}/>}</div>
123
+ }
124
+ ` ,
120
125
options : [ { validStrategies : [ 'coerce' , 'ternary' ] } ] ,
126
+ } ,
127
+ {
121
128
code : `
122
129
const Component = ({ elements, count }) => {
123
130
return <div>{!!count && <List elements={elements}/>}</div>
124
131
}
125
132
` ,
133
+ options : [ { validStrategies : [ 'coerce' ] } ] ,
134
+ } ,
135
+
136
+ // Fixes for:
137
+ // - https://github.com/jsx-eslint/eslint-plugin-react/issues/3292
138
+ // - https://github.com/jsx-eslint/eslint-plugin-react/issues/3297
139
+ {
140
+ // It shouldn't delete valid alternate from ternary expressions when "coerce" is the only valid strategy
141
+ code : `
142
+ const Component = ({ elements, count }) => {
143
+ return (
144
+ <div>
145
+ <div> {direction ? (direction === "down" ? "▼" : "▲") : ""} </div>
146
+ <div>{ containerName.length > 0 ? "Loading several stuff" : "Loading" }</div>
147
+ </div>
148
+ )
149
+ }
150
+ ` ,
151
+ options : [ { validStrategies : [ 'coerce' ] } ] ,
152
+ } ,
153
+ {
154
+ // It shouldn't delete valid branches from ternary expressions when ["coerce", "ternary"] are only valid strategies
155
+ code : `
156
+ const Component = ({ elements, count }) => {
157
+ return <div>{direction ? (direction === "down" ? "▼" : "▲") : ""}</div>
158
+ }
159
+ ` ,
160
+ options : [ { validStrategies : [ 'coerce' , 'ternary' ] } ] ,
161
+ } ,
162
+ {
163
+ // It shouldn't report nested logical expressions when "coerce" is the only valid strategy
164
+ code : `
165
+ const Component = ({ direction }) => {
166
+ return (
167
+ <div>
168
+ <div>{!!direction && direction === "down" && "▼"}</div>
169
+ <div>{direction === "down" && !!direction && "▼"}</div>
170
+ <div>{direction === "down" || !!direction && "▼"}</div>
171
+ <div>{(!display || display === DISPLAY.WELCOME) && <span>foo</span>}</div>
172
+ </div>
173
+ )
174
+ }
175
+ ` ,
176
+ options : [ { validStrategies : [ 'coerce' ] } ] ,
126
177
} ,
127
178
] ) ,
128
179
0 commit comments