eslint-plugin-jest-formatting 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/.circleci/config.yml +2 -2
  2. package/.eslintrc +15 -4
  3. package/CHANGELOG.md +28 -6
  4. package/README.md +21 -13
  5. package/docs/rules/padding-around-all.md +13 -0
  6. package/lib/ast-utils.js +41 -0
  7. package/lib/index.js +159 -76
  8. package/lib/rules/padding.js +131 -158
  9. package/package.json +20 -19
  10. package/src/ast-utils.ts +80 -0
  11. package/src/index.ts +166 -81
  12. package/src/rules/padding.ts +263 -252
  13. package/tests/catfood.js +41 -0
  14. package/tests/dogfood.spec.js +2 -0
  15. package/tests/lib/ast-utils.spec.ts +94 -0
  16. package/tests/lib/rules/padding-around-after-all-blocks.spec.js +3 -8
  17. package/tests/lib/rules/padding-around-after-each-blocks.spec.js +3 -8
  18. package/tests/lib/rules/padding-around-before-all-blocks.spec.js +3 -8
  19. package/tests/lib/rules/padding-around-before-each-blocks.spec.js +3 -8
  20. package/tests/lib/rules/padding-around-describe-blocks.spec.js +7 -12
  21. package/tests/lib/rules/padding-around-expect-groups.spec.js +3 -8
  22. package/tests/lib/rules/padding-around-test-blocks.spec.js +15 -12
  23. package/tsconfig.json +1 -1
  24. package/lib/utils.js +0 -15
  25. package/src/utils.ts +0 -40
  26. package/tests/lib/rules/padding-before-after-all-blocks.spec.js +0 -104
  27. package/tests/lib/rules/padding-before-after-each-blocks.spec.js +0 -104
  28. package/tests/lib/rules/padding-before-before-all-blocks.spec.js +0 -104
  29. package/tests/lib/rules/padding-before-before-each-blocks.spec.js +0 -104
  30. package/tests/lib/rules/padding-before-describe-blocks.spec.js +0 -150
  31. package/tests/lib/rules/padding-before-expect-statements.spec.js +0 -144
  32. package/tests/lib/rules/padding-before-test-blocks.spec.js +0 -159
  33. package/yarn.lock +0 -4232
package/src/index.ts CHANGED
@@ -3,95 +3,180 @@
3
3
  * @author Dan
4
4
  */
5
5
 
6
- import { makeRule } from './utils';
6
+ import {
7
+ Config,
8
+ createRule,
9
+ PaddingType,
10
+ StatementType,
11
+ } from './rules/padding';
7
12
 
8
- //------------------------------------------------------------------------------
9
- // Plugin Definition
10
- //------------------------------------------------------------------------------
11
-
12
- export const rules = {
13
- 'padding-around-after-all-blocks': makeRule([
14
- { blankLine: 'always', prev: '*', next: 'afterAll' },
15
- { blankLine: 'always', prev: 'afterAll', next: '*' },
16
- ]),
17
- 'padding-around-after-each-blocks': makeRule([
18
- { blankLine: 'always', prev: '*', next: 'afterEach' },
19
- { blankLine: 'always', prev: 'afterEach', next: '*' },
20
- ]),
21
- 'padding-around-before-all-blocks': makeRule([
22
- { blankLine: 'always', prev: '*', next: 'beforeAll' },
23
- { blankLine: 'always', prev: 'beforeAll', next: '*' },
24
- ]),
25
- 'padding-around-before-each-blocks': makeRule([
26
- { blankLine: 'always', prev: '*', next: 'beforeEach' },
27
- { blankLine: 'always', prev: 'beforeEach', next: '*' },
28
- ]),
29
- 'padding-around-describe-blocks': makeRule([
30
- { blankLine: 'always', prev: '*', next: 'describe' },
31
- { blankLine: 'always', prev: 'describe', next: '*' },
32
- ]),
33
- 'padding-around-test-blocks': makeRule([
34
- { blankLine: 'always', prev: '*', next: ['test', 'it'] },
35
- { blankLine: 'always', prev: ['test', 'it'], next: '*' },
36
- ]),
37
- // Deprecated
38
- 'padding-before-after-all-blocks': makeRule([
39
- { blankLine: 'always', prev: '*', next: 'afterAll' },
40
- ]),
41
- 'padding-before-after-each-blocks': makeRule([
42
- { blankLine: 'always', prev: '*', next: 'afterEach' },
43
- ]),
44
- 'padding-before-before-all-blocks': makeRule([
45
- { blankLine: 'always', prev: '*', next: 'beforeAll' },
46
- ]),
47
- 'padding-before-before-each-blocks': makeRule([
48
- { blankLine: 'always', prev: '*', next: 'beforeEach' },
49
- ]),
50
- 'padding-before-describe-blocks': makeRule([
51
- { blankLine: 'always', prev: '*', next: 'describe' },
52
- ]),
53
- 'padding-before-expect-statements': makeRule([
54
- { blankLine: 'always', prev: '*', next: 'expect' },
55
- { blankLine: 'any', prev: 'expect', next: 'expect' },
56
- ]),
57
- 'padding-around-expect-groups': makeRule([
58
- { blankLine: 'always', prev: '*', next: 'expect' },
59
- { blankLine: 'always', prev: 'expect', next: '*' },
60
- { blankLine: 'any', prev: 'expect', next: 'expect' },
61
- ]),
62
- 'padding-before-test-blocks': makeRule([
63
- { blankLine: 'always', prev: '*', next: ['test', 'it'] },
64
- ]),
65
- 'padding-before-all': makeRule([
13
+ const paddingConfigs: { [name: string]: Config[] } = {
14
+ afterAll: [
15
+ {
16
+ paddingType: PaddingType.Always,
17
+ prevStatementType: StatementType.Any,
18
+ nextStatementType: StatementType.AfterAllToken,
19
+ },
20
+ {
21
+ paddingType: PaddingType.Always,
22
+ prevStatementType: StatementType.AfterAllToken,
23
+ nextStatementType: StatementType.Any,
24
+ },
25
+ ],
26
+ afterEach: [
27
+ {
28
+ paddingType: PaddingType.Always,
29
+ prevStatementType: StatementType.Any,
30
+ nextStatementType: StatementType.AfterEachToken,
31
+ },
32
+ {
33
+ paddingType: PaddingType.Always,
34
+ prevStatementType: StatementType.AfterEachToken,
35
+ nextStatementType: StatementType.Any,
36
+ },
37
+ ],
38
+ beforeAll: [
66
39
  {
67
- blankLine: 'always',
68
- prev: '*',
69
- next: [
70
- 'afterAll',
71
- 'afterEach',
72
- 'beforeAll',
73
- 'beforeEach',
74
- 'describe',
75
- 'expect',
76
- 'it',
77
- 'test',
40
+ paddingType: PaddingType.Always,
41
+ prevStatementType: StatementType.Any,
42
+ nextStatementType: StatementType.BeforeAllToken,
43
+ },
44
+ {
45
+ paddingType: PaddingType.Always,
46
+ prevStatementType: StatementType.BeforeAllToken,
47
+ nextStatementType: StatementType.Any,
48
+ },
49
+ ],
50
+ beforeEach: [
51
+ {
52
+ paddingType: PaddingType.Always,
53
+ prevStatementType: StatementType.Any,
54
+ nextStatementType: StatementType.BeforeEachToken,
55
+ },
56
+ {
57
+ paddingType: PaddingType.Always,
58
+ prevStatementType: StatementType.BeforeEachToken,
59
+ nextStatementType: StatementType.Any,
60
+ },
61
+ ],
62
+ describe: [
63
+ {
64
+ paddingType: PaddingType.Always,
65
+ prevStatementType: StatementType.Any,
66
+ nextStatementType: [
67
+ StatementType.DescribeToken,
68
+ StatementType.FdescribeToken,
69
+ StatementType.XdescribeToken,
78
70
  ],
79
71
  },
80
- { blankLine: 'any', prev: 'expect', next: 'expect' },
81
- ]),
72
+ {
73
+ paddingType: PaddingType.Always,
74
+ prevStatementType: [
75
+ StatementType.DescribeToken,
76
+ StatementType.FdescribeToken,
77
+ StatementType.XdescribeToken,
78
+ ],
79
+ nextStatementType: StatementType.Any,
80
+ },
81
+ ],
82
+ expect: [
83
+ {
84
+ paddingType: PaddingType.Always,
85
+ prevStatementType: StatementType.Any,
86
+ nextStatementType: StatementType.ExpectToken,
87
+ },
88
+ {
89
+ paddingType: PaddingType.Always,
90
+ prevStatementType: StatementType.ExpectToken,
91
+ nextStatementType: StatementType.Any,
92
+ },
93
+ {
94
+ paddingType: PaddingType.Any,
95
+ prevStatementType: StatementType.ExpectToken,
96
+ nextStatementType: StatementType.ExpectToken,
97
+ },
98
+ ],
99
+ test: [
100
+ {
101
+ paddingType: PaddingType.Always,
102
+ prevStatementType: StatementType.Any,
103
+ nextStatementType: [
104
+ StatementType.TestToken,
105
+ StatementType.ItToken,
106
+ StatementType.FitToken,
107
+ StatementType.XitToken,
108
+ StatementType.XtestToken,
109
+ ],
110
+ },
111
+ {
112
+ paddingType: PaddingType.Always,
113
+ prevStatementType: [
114
+ StatementType.TestToken,
115
+ StatementType.ItToken,
116
+ StatementType.FitToken,
117
+ StatementType.XitToken,
118
+ StatementType.XtestToken,
119
+ ],
120
+ nextStatementType: StatementType.Any,
121
+ },
122
+ ],
123
+ };
124
+
125
+ export const rules = {
126
+ 'padding-around-after-all-blocks': createRule(paddingConfigs.afterAll),
127
+ 'padding-around-after-each-blocks': createRule(paddingConfigs.afterEach),
128
+ 'padding-around-before-all-blocks': createRule(paddingConfigs.beforeAll),
129
+ 'padding-around-before-each-blocks': createRule(paddingConfigs.beforeEach),
130
+ 'padding-around-describe-blocks': createRule(paddingConfigs.describe),
131
+ 'padding-around-expect-groups': createRule(paddingConfigs.expect),
132
+ 'padding-around-test-blocks': createRule(paddingConfigs.test),
133
+ 'padding-around-all': createRule(
134
+ [].concat(...Object.keys(paddingConfigs).map((k) => paddingConfigs[k])),
135
+ ),
82
136
  };
83
137
 
84
138
  export const configs = {
85
139
  recommended: {
86
140
  plugins: ['jest-formatting'],
87
- rules: {
88
- 'jest-formatting/padding-around-after-all-blocks': 2,
89
- 'jest-formatting/padding-around-after-each-blocks': 2,
90
- 'jest-formatting/padding-around-before-all-blocks': 2,
91
- 'jest-formatting/padding-around-before-each-blocks': 2,
92
- 'jest-formatting/padding-around-expect-groups': 2,
93
- 'jest-formatting/padding-around-describe-blocks': 2,
94
- 'jest-formatting/padding-around-test-blocks': 2,
95
- },
141
+ overrides: [
142
+ {
143
+ files: [
144
+ '**/*.test.*',
145
+ '**/*_test.*',
146
+ '**/*Test.*',
147
+ '**/*.spec.*',
148
+ '**/*_spec.*',
149
+ '**/*Spec.*',
150
+ '**/__tests__/*',
151
+ ],
152
+ rules: {
153
+ 'jest-formatting/padding-around-after-all-blocks': 2,
154
+ 'jest-formatting/padding-around-after-each-blocks': 2,
155
+ 'jest-formatting/padding-around-before-all-blocks': 2,
156
+ 'jest-formatting/padding-around-before-each-blocks': 2,
157
+ 'jest-formatting/padding-around-describe-blocks': 2,
158
+ 'jest-formatting/padding-around-test-blocks': 2,
159
+ },
160
+ },
161
+ ],
162
+ },
163
+ strict: {
164
+ plugins: ['jest-formatting'],
165
+ overrides: [
166
+ {
167
+ files: [
168
+ '**/*.test.*',
169
+ '**/*_test.*',
170
+ '**/*Test.*',
171
+ '**/*.spec.*',
172
+ '**/*_spec.*',
173
+ '**/*Spec.*',
174
+ '**/__tests__/*',
175
+ ],
176
+ rules: {
177
+ 'jest-formatting/padding-around-all': 2,
178
+ },
179
+ },
180
+ ],
96
181
  },
97
182
  };