@@ -64,7 +64,31 @@ ruleTester.run("prefer-let", rule, {
6464 languageOptions : {
6565 parser : require ( "@typescript-eslint/parser" )
6666 }
67- }
67+ } ,
68+ // forceUpperCaseConst: const with UPPER_CASE at top level is valid
69+ {
70+ code : "const FOO_BAR = 'baz';" ,
71+ options : [ { forceUpperCaseConst : true } ]
72+ } ,
73+ {
74+ code : "const FOO = 1;" ,
75+ options : [ { forceUpperCaseConst : true } ]
76+ } ,
77+ {
78+ code : "const API_BASE_URL = 'http://example.com';" ,
79+ options : [ { forceUpperCaseConst : true } ]
80+ } ,
81+ {
82+ code : "export const FOO_BAR = 'baz';" ,
83+ options : [ { forceUpperCaseConst : true } ]
84+ } ,
85+ // forceUpperCaseConst: let with non-upper-case at top level is valid
86+ {
87+ code : "let fooBar = 'baz';" ,
88+ options : [ { forceUpperCaseConst : true } ]
89+ } ,
90+ // forceUpperCaseConst: const UPPER_CASE inside function is still invalid
91+ // (no special treatment for non-top-level)
6892 ] ,
6993
7094 invalid : [
@@ -113,5 +137,56 @@ ruleTester.run("prefer-let", rule, {
113137 message : "`const` declaration outside top-level scope"
114138 } ]
115139 } ,
140+ // forceUpperCaseConst: const with non-upper-case at top level is invalid
141+ {
142+ code : "const fooBar = 'baz';" ,
143+ output : "let fooBar = 'baz';" ,
144+ options : [ { forceUpperCaseConst : true } ] ,
145+ errors : [ {
146+ message : "`const` declaration for non-constant names at top-level scope. Use `let` or rename to UPPER_CASE"
147+ } ]
148+ } ,
149+ {
150+ code : "const { foo, bar } = {};" ,
151+ output : "let { foo, bar } = {};" ,
152+ options : [ { forceUpperCaseConst : true } ] ,
153+ errors : [ {
154+ message : "`const` declaration for non-constant names at top-level scope. Use `let` or rename to UPPER_CASE"
155+ } ]
156+ } ,
157+ {
158+ code : "export const AlsoObject = Object;" ,
159+ output : "export let AlsoObject = Object;" ,
160+ options : [ { forceUpperCaseConst : true } ] ,
161+ errors : [ {
162+ message : "`const` declaration for non-constant names at top-level scope. Use `let` or rename to UPPER_CASE"
163+ } ]
164+ } ,
165+ // forceUpperCaseConst: let with UPPER_CASE at top level is invalid
166+ {
167+ code : "let FOO_BAR = 'baz';" ,
168+ output : "const FOO_BAR = 'baz';" ,
169+ options : [ { forceUpperCaseConst : true } ] ,
170+ errors : [ {
171+ message : "use `const` for constant names (UPPER_CASE) at top-level scope"
172+ } ]
173+ } ,
174+ {
175+ code : "let FOO = 1;" ,
176+ output : "const FOO = 1;" ,
177+ options : [ { forceUpperCaseConst : true } ] ,
178+ errors : [ {
179+ message : "use `const` for constant names (UPPER_CASE) at top-level scope"
180+ } ]
181+ } ,
182+ // forceUpperCaseConst: const UPPER_CASE inside function is still invalid
183+ {
184+ code : "function y() { const FOO_BAR = 'baz'; return FOO_BAR; }" ,
185+ output : "function y() { let FOO_BAR = 'baz'; return FOO_BAR; }" ,
186+ options : [ { forceUpperCaseConst : true } ] ,
187+ errors : [ {
188+ message : "`const` declaration outside top-level scope"
189+ } ]
190+ } ,
116191 ]
117192} ) ;
0 commit comments