Skip to content

Commit c768eba

Browse files
committed
make explicit test options & deduplicate
1 parent 48ef00e commit c768eba

File tree

8 files changed

+268
-439
lines changed

8 files changed

+268
-439
lines changed

src/report.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ export function reportBodyNodes(
6060
assert(loc, 'createReportObject return value must include a node location')
6161
assert(messageId, 'createReportObject return value must include a problem message')
6262

63+
let optionsString = [
64+
isRequiredFirst && 'required-first',
65+
isInsensitive && 'insensitive',
66+
isNatural && 'natural',
67+
]
68+
.filter(Boolean)
69+
.join(', ')
70+
if (optionsString) optionsString += ' '
71+
6372
context.report({
6473
loc,
6574
messageId,
@@ -71,9 +80,7 @@ export function reportBodyNodes(
7180
? `before '${getPropertyName(sortedBody[finalIndex + 1])}'`
7281
: 'at the end',
7382
order,
74-
insensitive: isInsensitive ? 'insensitive ' : '',
75-
natural: isNatural ? 'natural ' : '',
76-
requiredFirst: isRequiredFirst ? 'required first ' : '',
83+
options: optionsString,
7784
notice: getDeprecationMessage(context.id),
7885
},
7986
fix: fixerFunction,

src/types/error.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export enum ErrorMessage {
22
InterfaceParentInvalidOrder = `Found {{ unsortedCount }} keys out of order.`,
33
EnumParentInvalidOrder = `{{ notice }}Found {{ unsortedCount }} members out of order.`,
4-
InterfaceInvalidOrder = `Expected interface keys to be in {{ requiredFirst }}{{ insensitive }}{{ natural }}{{ order }}ending order. '{{ nodeName }}' should be {{ messageShouldBeWhere }}. Run autofix to sort entire body.`,
5-
EnumInvalidOrder = `{{ notice }}Expected enum members to be in {{ insensitive }}{{ natural }}{{ order }}ending order. '{{ nodeName }}' should be {{ messageShouldBeWhere }}. Run autofix to sort entire body.`,
4+
InterfaceInvalidOrder = `Expected interface keys to be in {{ order }}ending {{ options }}order. '{{ nodeName }}' should be {{ messageShouldBeWhere }}. Run autofix to sort entire body.`,
5+
EnumInvalidOrder = `{{ notice }}Expected enum members to be in {{ order }}ending {{ options }}order. '{{ nodeName }}' should be {{ messageShouldBeWhere }}. Run autofix to sort entire body.`,
66
}

tests/helpers/options.ts

Lines changed: 35 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AllRuleOptions, SortingOrder, SortingParamsOptions } from 'types'
1+
import { AllRuleOptions, SortingOrder, SortingParamsOptions } from '../../src/types'
22

33
export type OptionsSet = {
44
/**
@@ -10,84 +10,74 @@ export type OptionsSet = {
1010
* Option sets by test category
1111
*/
1212
export const optionsSetsWithRequiredFirst = {
13-
ascendingOnly: [[SortingOrder.Ascending]],
14-
ascending: [
15-
[],
16-
[SortingOrder.Ascending],
17-
[SortingOrder.Ascending, { caseSensitive: true }],
18-
[SortingOrder.Ascending, { natural: false }],
19-
[SortingOrder.Ascending, { caseSensitive: true, natural: false }],
13+
ascendingWithDefaults: [[], [SortingOrder.Ascending]],
14+
ascendingSensitiveNonNaturalNotRequired: [
2015
[
2116
SortingOrder.Ascending,
2217
{ caseSensitive: true, natural: false, requiredFirst: false },
2318
],
2419
],
25-
ascendingInsensitive: [[SortingOrder.Ascending, { caseSensitive: false }]],
26-
ascendingNatural: [[SortingOrder.Ascending, { natural: true }]],
27-
ascendingInsensitiveNatural: [
28-
[SortingOrder.Ascending, { natural: true, caseSensitive: false }],
20+
ascendingInsensitiveNonNaturalNotRequired: [
21+
[
22+
SortingOrder.Ascending,
23+
{ caseSensitive: false, natural: false, requiredFirst: false },
24+
],
2925
],
30-
ascendingSensitive: [
31-
[],
32-
[SortingOrder.Ascending],
33-
[SortingOrder.Ascending, { caseSensitive: true }],
34-
[SortingOrder.Ascending, { natural: false }],
35-
[SortingOrder.Ascending, { caseSensitive: true, natural: false }],
26+
ascendingSensitiveNaturalNotRequired: [
3627
[
3728
SortingOrder.Ascending,
38-
{ caseSensitive: true, natural: false, requiredFirst: false },
29+
{ caseSensitive: true, natural: true, requiredFirst: false },
30+
],
31+
],
32+
ascendingInsensitiveNaturalNotRequired: [
33+
[
34+
SortingOrder.Ascending,
35+
{ caseSensitive: false, natural: true, requiredFirst: false },
3936
],
4037
],
4138
ascendingInsensitiveNaturalRequired: [
4239
[
4340
SortingOrder.Ascending,
44-
{ natural: true, caseSensitive: false, requiredFirst: true },
41+
{ caseSensitive: false, natural: true, requiredFirst: true },
4542
],
4643
],
47-
ascendingInsensitiveNaturalNotRequired: [
44+
ascendingSensitiveNonNaturalRequired: [
4845
[
4946
SortingOrder.Ascending,
50-
{ natural: true, caseSensitive: false, requiredFirst: false },
47+
{ caseSensitive: true, natural: false, requiredFirst: true },
5148
],
5249
],
53-
ascendingRequired: [[SortingOrder.Ascending, { requiredFirst: true }]],
54-
descendingOnly: [[SortingOrder.Descending]],
55-
descending: [
56-
[SortingOrder.Descending],
57-
[SortingOrder.Descending, { caseSensitive: true }],
58-
[SortingOrder.Descending, { natural: false }],
59-
[SortingOrder.Descending, { caseSensitive: true, natural: false }],
50+
descendingWithDefaults: [[SortingOrder.Descending]],
51+
descendingInsensitiveNonNaturalNotRequired: [
6052
[
6153
SortingOrder.Descending,
62-
{ caseSensitive: true, natural: false, requiredFirst: false },
54+
{ caseSensitive: false, natural: false, requiredFirst: false },
6355
],
6456
],
65-
descendingInsensitive: [[SortingOrder.Descending, { caseSensitive: false }]],
66-
descendingInsensitiveNonNatural: [
67-
[SortingOrder.Descending, { caseSensitive: false }],
68-
[SortingOrder.Descending, { caseSensitive: false, natural: false }],
69-
],
70-
descendingNatural: [[SortingOrder.Descending, { natural: true }]],
71-
descendingInsensitiveNatural: [
72-
[SortingOrder.Descending, { natural: true, caseSensitive: false }],
57+
descendingSensitiveNaturalNotRequired: [
58+
[
59+
SortingOrder.Descending,
60+
{ caseSensitive: true, natural: true, requiredFirst: false },
61+
],
7362
],
74-
descendingSensitiveNatural: [
75-
[SortingOrder.Descending, { natural: true }],
76-
[SortingOrder.Descending, { natural: true, caseSensitive: true }],
63+
descendingInsensitiveNaturalNotRequired: [
64+
[
65+
SortingOrder.Descending,
66+
{ caseSensitive: false, natural: true, requiredFirst: false },
67+
],
7768
],
7869
descendingInsensitiveNaturalRequired: [
7970
[
8071
SortingOrder.Descending,
81-
{ natural: true, caseSensitive: false, requiredFirst: true },
72+
{ caseSensitive: false, natural: true, requiredFirst: true },
8273
],
8374
],
84-
descendingInsensitiveNaturalNotRequired: [
75+
descendingSensitiveNonNaturalRequired: [
8576
[
8677
SortingOrder.Descending,
87-
{ natural: true, caseSensitive: false, requiredFirst: false },
78+
{ caseSensitive: false, natural: true, requiredFirst: true },
8879
],
8980
],
90-
descendingRequired: [[SortingOrder.Descending, { requiredFirst: true }]],
9181
noOptions: [[]],
9282
}
9383

tests/helpers/strings.ts

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
11
import { OptionsSetsKey } from './options'
22

3+
// Check src/report.ts for option string ordering
4+
// Only options set differently from default are printed
35
export const orderStrings: Record<OptionsSetsKey, string> = {
4-
ascending: 'ascending',
5-
ascendingInsensitive: 'insensitive ascending',
6-
ascendingNatural: 'natural ascending',
7-
ascendingInsensitiveNatural: 'insensitive natural ascending',
8-
descendingOnly: 'descending',
9-
descendingInsensitive: 'insensitive descending',
10-
descendingNatural: 'natural descending',
11-
descendingInsensitiveNatural: 'insensitive natural descending',
12-
noOptions: '',
13-
ascendingOnly: 'ascending',
14-
ascendingSensitive: 'ascending',
15-
ascendingInsensitiveNaturalRequired: 'required first insensitive natural ascending',
16-
ascendingInsensitiveNaturalNotRequired: 'insensitive natural ascending',
17-
ascendingRequired: '',
18-
descending: 'descending',
19-
descendingInsensitiveNonNatural: '',
20-
descendingSensitiveNatural: '',
21-
descendingInsensitiveNaturalRequired: 'required first insensitive natural descending',
22-
descendingInsensitiveNaturalNotRequired: 'insensitive natural descending',
23-
descendingRequired: '',
6+
ascendingInsensitiveNaturalNotRequired: 'ascending insensitive, natural',
7+
ascendingInsensitiveNaturalRequired: 'ascending required-first, insensitive, natural',
8+
ascendingInsensitiveNonNaturalNotRequired: 'ascending insensitive',
9+
ascendingSensitiveNaturalNotRequired: 'ascending natural',
10+
ascendingSensitiveNonNaturalNotRequired: 'ascending',
11+
ascendingSensitiveNonNaturalRequired: 'ascending required-first',
12+
ascendingWithDefaults: 'ascending',
13+
noOptions: 'ascending',
14+
15+
descendingInsensitiveNaturalNotRequired: 'descending insensitive, natural',
16+
descendingInsensitiveNaturalRequired: 'descending required-first, insensitive, natural',
17+
descendingInsensitiveNonNaturalNotRequired: 'descending insensitive',
18+
descendingSensitiveNaturalNotRequired: 'descending natural',
19+
descendingSensitiveNonNaturalRequired: 'descending required-first',
20+
descendingWithDefaults: 'descending',
2421
}
2522

2623
export enum CaseCategory {

tests/rules/enum/enum-big.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ const invalidBigTestCode = fs
1717
.toString('utf-8')
1818

1919
const valid: PreValidTestCaseObject = {
20-
ascending: [validBigTestCode],
20+
ascendingWithDefaults: [validBigTestCode],
2121
}
2222

2323
const invalid: PreInvalidTestCaseObject = {
24-
ascending: [
24+
ascendingWithDefaults: [
2525
{
2626
code: invalidBigTestCode,
2727
output: validBigTestCode,

0 commit comments

Comments
 (0)