Skip to content

Commit 787e0fb

Browse files
committed
add explicit required first false tests
1 parent b097b57 commit 787e0fb

File tree

1 file changed

+155
-0
lines changed

1 file changed

+155
-0
lines changed

tests/lib/rules/interface.spec.js

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,26 @@ ruleTester.run('interface', rule, {
6464
{ code: "interface U {1:T; '11':T; A:T; 2?:T;}", options: ['asc', { natural: true, caseSensitive: false, requiredFirst: true }] },
6565
{ code: "interface U {'Z':T; À:T; è:T; '#'?:T;}", options: ['asc', { natural: true, caseSensitive: false, requiredFirst: true }] },
6666

67+
// asc, required
68+
{ code: 'interface U {_:T; b:T; a?:T;} // asc, natural, insensitive, required', options: ['asc', { requiredFirst: true }] },
69+
{ code: 'interface U {a:T; c:T; b?:T;}', options: ['asc', { requiredFirst: true }] },
70+
{ code: 'interface U {b:T; b_:T; a?:T;}', options: ['asc', { requiredFirst: true }] },
71+
{ code: 'interface U {C:T; c:T; b_?:T;}', options: ['asc', { requiredFirst: true }] },
72+
{ code: 'interface U {1:T; 11:T; 9:T; 111?:T;}', options: ['asc', { requiredFirst: true }] },
73+
{ code: 'interface U {$:T; _:T; A?:T; a?:T;}', options: ['asc', { requiredFirst: true }] },
74+
{ code: "interface U {10:T; '11':T; 1?:T; 12?:T; 2?:T;}", options: ['asc', { requiredFirst: true }] },
75+
{ code: "interface U {'Z':T; À:T; è:T; '#'?:T;}", options: ['asc', { requiredFirst: true }] },
76+
77+
// asc, natural, insensitive, not-required
78+
{ code: 'interface U {_:T; a?:T; b:T;} // asc, natural, insensitive, not-required', options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }] },
79+
{ code: 'interface U {a:T; b?:T; c:T;}', options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }] },
80+
{ code: 'interface U {a?:T; b:T; b_:T;}', options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }] },
81+
{ code: 'interface U {b_?:T; C:T; c:T;}', options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }] },
82+
{ code: 'interface U {b_?:T; c:T; C:T;}', options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }] },
83+
{ code: 'interface U {$:T; _:T; A?:T; a?:T;}', options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }] },
84+
{ code: "interface U {1:T; 2?:T; '11':T; A:T;}", options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }] },
85+
{ code: "interface U {'#'?:T; 'Z':T; À:T; è:T;}", options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }] },
86+
6787
// desc
6888
{ code: 'interface U {b:T; a:T; _:T;} // desc', options: ['desc'] },
6989
{ code: 'interface U {c:T; b:T; a:T;}', options: ['desc'] },
@@ -112,6 +132,26 @@ ruleTester.run('interface', rule, {
112132
{ code: "interface U { A:T; '11':T; 1:T; 2?:T;}", options: ['desc', { natural: true, caseSensitive: false, requiredFirst: true }] },
113133
{ code: "interface U {è:T; 'Z':T; À?:T; '#'?:T;}", options: ['desc', { natural: true, caseSensitive: false, requiredFirst: true }] },
114134

135+
// desc, required
136+
{ code: 'interface U {b:T; _:T; a?:T;} // desc, natural, insensitive, required', options: ['desc', { requiredFirst: true }] },
137+
{ code: 'interface U {c:T; a:T; b?:T;}', options: ['desc', { requiredFirst: true }] },
138+
{ code: 'interface U {b_:T; b:T; a?:T;}', options: ['desc', { requiredFirst: true }] },
139+
{ code: 'interface U {c:T; C:T; b_?:T;}', options: ['desc', { requiredFirst: true }] },
140+
{ code: 'interface U {9:T; 11:T; 1:T; 111?:T;}', options: ['desc', { requiredFirst: true }] },
141+
{ code: 'interface U {_:T; $:T; a?:T; A?:T;}', options: ['desc', { requiredFirst: true }] },
142+
{ code: "interface U {'11':T; 10:T; 2?:T; 12?:T; 1?:T;}", options: ['desc', { requiredFirst: true }] },
143+
{ code: "interface U {è:T; À:T; 'Z':T; '#'?:T;}", options: ['desc', { requiredFirst: true }] },
144+
145+
// desc, natural, insensitive, not-required
146+
{ code: 'interface U {b:T; a?:T; _:T;} // desc, natural, insensitive, not-required', options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }] },
147+
{ code: 'interface U {c:T; b?:T; a:T;}', options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }] },
148+
{ code: 'interface U {b_:T; b:T; a?:T;}', options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }] },
149+
{ code: 'interface U {c:T; C:T; b_?:T;}', options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }] },
150+
{ code: 'interface U {C:T; c:T; b_?:T;}', options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }] },
151+
{ code: 'interface U {a?:T; A?:T; _:T; $:T;}', options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }] },
152+
{ code: "interface U {A:T; '11':T; 2?:T; 1:T;}", options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }] },
153+
{ code: "interface U {è:T; À:T; 'Z':T; '#'?:T;}", options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }] },
154+
115155
// index signatures
116156
{ code: 'interface U<T> { [nkey: number]: T; [skey: string]: T; $: T; A: T; _: T; a: T; }', options: ['asc'] },
117157
{ code: 'interface U<T> { a: T; _: T; A: T; $: T; [skey: string]: T; [nkey: number]: T; }', options: ['desc'] },
@@ -400,6 +440,56 @@ ruleTester.run('interface', rule, {
400440
output: "interface U {'Z':T; À:T; è:T; '#'?:T;}",
401441
},
402442

443+
// asc, natural, insensitive, not-required
444+
{
445+
code: 'interface U {_:T; b:T; a?:T;} // asc, natural, insensitive, not-required',
446+
options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }],
447+
errors: ["Expected interface keys to be in natural insensitive ascending order. 'a' should be before 'b'."],
448+
output: 'interface U {_:T; a?:T; b:T;} // asc, natural, insensitive, not-required',
449+
},
450+
{
451+
code: 'interface U {b?:T; a:T; c:T;}',
452+
options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }],
453+
errors: ["Expected interface keys to be in natural insensitive ascending order. 'a' should be before 'b'."],
454+
output: 'interface U {a:T; b?:T; c:T;}',
455+
},
456+
{
457+
code: 'interface U {b:T; a?:T; b_:T;}',
458+
options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }],
459+
errors: ["Expected interface keys to be in natural insensitive ascending order. 'a' should be before 'b'."],
460+
output: 'interface U {a?:T; b:T; b_:T;}',
461+
},
462+
{
463+
code: 'interface U {C:T; c:T; b_?:T;}',
464+
options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }],
465+
errors: ["Expected interface keys to be in natural insensitive ascending order. 'b_' should be before 'c'."],
466+
output: 'interface U {b_?:T; c:T; C:T;}',
467+
},
468+
{
469+
code: 'interface U {C:T; b_?:T; c:T;}',
470+
options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }],
471+
errors: ["Expected interface keys to be in natural insensitive ascending order. 'b_' should be before 'C'."],
472+
output: 'interface U {b_?:T; C:T; c:T;}',
473+
},
474+
{
475+
code: 'interface U {$:T; A?:T; _:T; a?:T;}',
476+
options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }],
477+
errors: ["Expected interface keys to be in natural insensitive ascending order. '_' should be before 'A'."],
478+
output: 'interface U {$:T; _:T; A?:T; a?:T;}',
479+
},
480+
{
481+
code: "interface U {1:T; '11':T; 2?:T; A:T;}",
482+
options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }],
483+
errors: ["Expected interface keys to be in natural insensitive ascending order. '2' should be before '11'."],
484+
output: "interface U {1:T; 2?:T; '11':T; A:T;}",
485+
},
486+
{
487+
code: "interface U {'Z':T; À:T; '#'?:T; è:T;}",
488+
options: ['asc', { natural: true, caseSensitive: false, requiredFirst: false }],
489+
errors: ["Expected interface keys to be in natural insensitive ascending order. '#' should be before 'À'."],
490+
output: "interface U {'#'?:T; À:T; 'Z':T; è:T;}",
491+
},
492+
403493
// desc
404494
{
405495
code: 'interface U {a:T; _:T; b:T;} // desc',
@@ -652,6 +742,71 @@ ruleTester.run('interface', rule, {
652742
output: "interface U {è:T; 'Z':T; '#'?:T; À?:T;}",
653743
},
654744

745+
// desc, natural, insensitive, not-required
746+
{
747+
code: 'interface U {_:T; a?:T; b:T;} // desc, natural, insensitive, not-required',
748+
options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }],
749+
errors: [
750+
"Expected interface keys to be in natural insensitive descending order. 'a' should be before '_'.",
751+
"Expected interface keys to be in natural insensitive descending order. 'b' should be before 'a'.",
752+
],
753+
output: 'interface U {b:T; a?:T; _:T;} // desc, natural, insensitive, not-required',
754+
},
755+
{
756+
code: 'interface U {a?:T; b:T; _:T;}',
757+
options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }],
758+
errors: ["Expected interface keys to be in natural insensitive descending order. 'b' should be before 'a'."],
759+
output: 'interface U {b:T; a?:T; _:T;}',
760+
},
761+
{
762+
code: 'interface U {b:T; b_:T; a?:T;}',
763+
options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }],
764+
errors: ["Expected interface keys to be in natural insensitive descending order. 'b_' should be before 'b'."],
765+
output: 'interface U {b_:T; b:T; a?:T;}',
766+
},
767+
{
768+
code: 'interface U {c:T; b_?:T; C:T;}',
769+
options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }],
770+
errors: ["Expected interface keys to be in natural insensitive descending order. 'C' should be before 'b_'."],
771+
output: 'interface U {c:T; C:T; b_?:T;}',
772+
},
773+
{
774+
code: 'interface U {b_?:T; C:T; c:T;}',
775+
options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }],
776+
errors: ["Expected interface keys to be in natural insensitive descending order. 'C' should be before 'b_'."],
777+
output: 'interface U {C:T; b_?:T; c:T;}',
778+
},
779+
{
780+
code: 'interface U {_:T; a?:T; $:T; A?:T;}',
781+
options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }],
782+
errors: [
783+
"Expected interface keys to be in natural insensitive descending order. 'a' should be before '_'.",
784+
"Expected interface keys to be in natural insensitive descending order. 'A' should be before '$'.",
785+
],
786+
output: 'interface U {a?:T; _:T; $:T; A?:T;}',
787+
},
788+
{
789+
code: "interface U {2?:T; A:T; 1:T; '11':T;}",
790+
options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }],
791+
errors: [
792+
"Expected interface keys to be in natural insensitive descending order. 'A' should be before '2'.",
793+
"Expected interface keys to be in natural insensitive descending order. '11' should be before '1'.",
794+
],
795+
output: "interface U {A:T; 2?:T; 1:T; '11':T;}",
796+
},
797+
{
798+
code: "interface U {è:T; 'Z':T; '#'?:T; À?:T;}",
799+
options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }],
800+
errors: ["Expected interface keys to be in natural insensitive descending order. 'À' should be before '#'."],
801+
output: "interface U {è:T; À?:T; '#'?:T; 'Z':T;}",
802+
},
803+
{
804+
code: "interface U {À?:T; 'Z':T; '#'?:T; è:T;}",
805+
options: ['desc', { natural: true, caseSensitive: false, requiredFirst: false }],
806+
errors: ["Expected interface keys to be in natural insensitive descending order. 'è' should be before '#'."],
807+
output: "interface U {è:T; 'Z':T; '#'?:T; À?:T;}",
808+
},
809+
655810
// index signatures
656811
{
657812
code: 'interface U<T> { A: T; [skey: string]: T; _: T; }',

0 commit comments

Comments
 (0)