eslint-plugin-jest 27.2.1 → 27.2.2

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 (77) hide show
  1. package/README.md +1 -1
  2. package/docs/rules/no-alias-methods.md +1 -1
  3. package/docs/rules/no-hooks.md +1 -1
  4. package/docs/rules/no-large-snapshots.md +4 -0
  5. package/docs/rules/require-hook.md +2 -6
  6. package/docs/rules/valid-expect.md +2 -2
  7. package/lib/index.js +2 -0
  8. package/lib/processors/__tests__/snapshot-processor.test.js +36 -0
  9. package/lib/rules/__tests__/consistent-test-it.test.js +921 -0
  10. package/lib/rules/__tests__/expect-expect.test.js +347 -0
  11. package/lib/rules/__tests__/fixtures/class.ts +13 -0
  12. package/lib/rules/__tests__/fixtures/file.ts +0 -0
  13. package/lib/rules/__tests__/fixtures/foo.ts +1 -0
  14. package/lib/rules/__tests__/fixtures/indent/indent-invalid-fixture-1.js +530 -0
  15. package/lib/rules/__tests__/fixtures/indent/indent-valid-fixture-1.js +530 -0
  16. package/lib/rules/__tests__/fixtures/react.tsx +0 -0
  17. package/lib/rules/__tests__/fixtures/tsconfig-withmeta.json +6 -0
  18. package/lib/rules/__tests__/fixtures/tsconfig.json +16 -0
  19. package/lib/rules/__tests__/fixtures/unstrict/file.ts +0 -0
  20. package/lib/rules/__tests__/fixtures/unstrict/react.tsx +0 -0
  21. package/lib/rules/__tests__/fixtures/unstrict/tsconfig.json +15 -0
  22. package/lib/rules/__tests__/max-expects.test.js +330 -0
  23. package/lib/rules/__tests__/max-nested-describe.test.js +247 -0
  24. package/lib/rules/__tests__/no-alias-methods.test.js +190 -0
  25. package/lib/rules/__tests__/no-commented-out-tests.test.js +213 -0
  26. package/lib/rules/__tests__/no-conditional-expect.test.js +696 -0
  27. package/lib/rules/__tests__/no-conditional-in-test.test.js +777 -0
  28. package/lib/rules/__tests__/no-deprecated-functions.test.js +119 -0
  29. package/lib/rules/__tests__/no-disabled-tests.test.js +241 -0
  30. package/lib/rules/__tests__/no-done-callback.test.js +424 -0
  31. package/lib/rules/__tests__/no-duplicate-hooks.test.js +469 -0
  32. package/lib/rules/__tests__/no-export.test.js +107 -0
  33. package/lib/rules/__tests__/no-focused-tests.test.js +373 -0
  34. package/lib/rules/__tests__/no-hooks.test.js +90 -0
  35. package/lib/rules/__tests__/no-identical-title.test.js +270 -0
  36. package/lib/rules/__tests__/no-if.test.js +787 -0
  37. package/lib/rules/__tests__/no-interpolation-in-snapshots.test.js +58 -0
  38. package/lib/rules/__tests__/no-jasmine-globals.test.js +206 -0
  39. package/lib/rules/__tests__/no-large-snapshots.test.js +237 -0
  40. package/lib/rules/__tests__/no-mocks-import.test.js +73 -0
  41. package/lib/rules/__tests__/no-restricted-jest-methods.test.js +103 -0
  42. package/lib/rules/__tests__/no-restricted-matchers.test.js +244 -0
  43. package/lib/rules/__tests__/no-standalone-expect.test.js +230 -0
  44. package/lib/rules/__tests__/no-test-prefixes.test.js +206 -0
  45. package/lib/rules/__tests__/no-test-return-statement.test.js +122 -0
  46. package/lib/rules/__tests__/no-untyped-mock-factory.test.js +149 -0
  47. package/lib/rules/__tests__/prefer-called-with.test.js +40 -0
  48. package/lib/rules/__tests__/prefer-comparison-matcher.test.js +200 -0
  49. package/lib/rules/__tests__/prefer-each.test.js +295 -0
  50. package/lib/rules/__tests__/prefer-equality-matcher.test.js +184 -0
  51. package/lib/rules/__tests__/prefer-expect-assertions.test.js +1437 -0
  52. package/lib/rules/__tests__/prefer-expect-resolves.test.js +96 -0
  53. package/lib/rules/__tests__/prefer-hooks-in-order.test.js +678 -0
  54. package/lib/rules/__tests__/prefer-hooks-on-top.test.js +218 -0
  55. package/lib/rules/__tests__/prefer-lowercase-title.test.js +619 -0
  56. package/lib/rules/__tests__/prefer-mock-promise-shorthand.test.js +360 -0
  57. package/lib/rules/__tests__/prefer-snapshot-hint.test.js +784 -0
  58. package/lib/rules/__tests__/prefer-spy-on.test.js +100 -0
  59. package/lib/rules/__tests__/prefer-strict-equal.test.js +46 -0
  60. package/lib/rules/__tests__/prefer-to-be.test.js +438 -0
  61. package/lib/rules/__tests__/prefer-to-contain.test.js +301 -0
  62. package/lib/rules/__tests__/prefer-to-have-length.test.js +99 -0
  63. package/lib/rules/__tests__/prefer-todo.test.js +78 -0
  64. package/lib/rules/__tests__/require-hook.test.js +403 -0
  65. package/lib/rules/__tests__/require-to-throw-message.test.js +108 -0
  66. package/lib/rules/__tests__/require-top-level-describe.test.js +236 -0
  67. package/lib/rules/__tests__/test-utils.js +11 -0
  68. package/lib/rules/__tests__/unbound-method.test.js +518 -0
  69. package/lib/rules/__tests__/valid-describe-callback.test.js +305 -0
  70. package/lib/rules/__tests__/valid-expect-in-promise.test.js +1583 -0
  71. package/lib/rules/__tests__/valid-expect.test.js +894 -0
  72. package/lib/rules/__tests__/valid-title.test.js +1147 -0
  73. package/lib/rules/utils/__tests__/detectJestVersion.test.js +221 -0
  74. package/lib/rules/utils/__tests__/parseJestFnCall.test.js +809 -0
  75. package/lib/rules/utils/accessors.js +4 -0
  76. package/lib/rules/utils/misc.js +36 -20
  77. package/package.json +12 -8
@@ -0,0 +1,330 @@
1
+ "use strict";
2
+
3
+ var _utils = require("@typescript-eslint/utils");
4
+ var _dedent = _interopRequireDefault(require("dedent"));
5
+ var _maxExpects = _interopRequireDefault(require("../max-expects"));
6
+ var _testUtils = require("./test-utils");
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ const ruleTester = new _utils.TSESLint.RuleTester({
9
+ parser: _testUtils.espreeParser,
10
+ parserOptions: {
11
+ ecmaVersion: 2017
12
+ }
13
+ });
14
+ ruleTester.run('max-expects', _maxExpects.default, {
15
+ valid: [`test('should pass')`, `test('should pass', () => {})`, `test.skip('should pass', () => {})`, (0, _dedent.default)`
16
+ test('should pass', function () {
17
+ expect(true).toBeDefined();
18
+ });
19
+ `, (0, _dedent.default)`
20
+ test('should pass', () => {
21
+ expect(true).toBeDefined();
22
+ expect(true).toBeDefined();
23
+ expect(true).toBeDefined();
24
+ expect(true).toBeDefined();
25
+ expect(true).toBeDefined();
26
+ });
27
+ `, (0, _dedent.default)`
28
+ test('should pass', () => {
29
+ expect(true).toBeDefined();
30
+ expect(true).toBeDefined();
31
+ expect(true).toBeDefined();
32
+ expect(true).toBeDefined();
33
+ expect(true).toBeDefined();
34
+ // expect(true).toBeDefined();
35
+ });
36
+ `, (0, _dedent.default)`
37
+ it('should pass', () => {
38
+ expect(true).toBeDefined();
39
+ expect(true).toBeDefined();
40
+ expect(true).toBeDefined();
41
+ expect(true).toBeDefined();
42
+ expect(true).toBeDefined();
43
+ });
44
+ `, (0, _dedent.default)`
45
+ test('should pass', async () => {
46
+ expect(true).toBeDefined();
47
+ expect(true).toBeDefined();
48
+ expect(true).toBeDefined();
49
+ expect(true).toBeDefined();
50
+ expect(true).toBeDefined();
51
+ });
52
+ `, (0, _dedent.default)`
53
+ test('should pass', async () => {
54
+ expect.hasAssertions();
55
+
56
+ expect(true).toBeDefined();
57
+ expect(true).toBeDefined();
58
+ expect(true).toBeDefined();
59
+ expect(true).toBeDefined();
60
+ expect(true).toBeDefined();
61
+ });
62
+ `, (0, _dedent.default)`
63
+ test('should pass', async () => {
64
+ expect(true).toBeDefined();
65
+ expect(true).toBeDefined();
66
+ expect(true).toBeDefined();
67
+ expect(true).toBeDefined();
68
+ expect(true).toEqual(expect.any(Boolean));
69
+ });
70
+ `, (0, _dedent.default)`
71
+ test('should pass', async () => {
72
+ expect.hasAssertions();
73
+
74
+ expect(true).toBeDefined();
75
+ expect(true).toBeDefined();
76
+ expect(true).toBeDefined();
77
+ expect(true).toBeDefined();
78
+ expect(true).toEqual(expect.any(Boolean));
79
+ });
80
+ `, (0, _dedent.default)`
81
+ describe('test', () => {
82
+ test('should pass', () => {
83
+ expect(true).toBeDefined();
84
+ expect(true).toBeDefined();
85
+ expect(true).toBeDefined();
86
+ expect(true).toBeDefined();
87
+ expect(true).toBeDefined();
88
+ });
89
+ });
90
+ `, (0, _dedent.default)`
91
+ test.each(['should', 'pass'], () => {
92
+ expect(true).toBeDefined();
93
+ expect(true).toBeDefined();
94
+ expect(true).toBeDefined();
95
+ expect(true).toBeDefined();
96
+ expect(true).toBeDefined();
97
+ });
98
+ `, (0, _dedent.default)`
99
+ test('should pass', () => {
100
+ expect(true).toBeDefined();
101
+ expect(true).toBeDefined();
102
+ expect(true).toBeDefined();
103
+ });
104
+ test('should pass', () => {
105
+ expect(true).toBeDefined();
106
+ expect(true).toBeDefined();
107
+ expect(true).toBeDefined();
108
+ });
109
+ `, (0, _dedent.default)`
110
+ function myHelper() {
111
+ expect(true).toBeDefined();
112
+ expect(true).toBeDefined();
113
+ expect(true).toBeDefined();
114
+ };
115
+
116
+ test('should pass', () => {
117
+ expect(true).toBeDefined();
118
+ expect(true).toBeDefined();
119
+ expect(true).toBeDefined();
120
+ });
121
+ `, (0, _dedent.default)`
122
+ function myHelper1() {
123
+ expect(true).toBeDefined();
124
+ expect(true).toBeDefined();
125
+ expect(true).toBeDefined();
126
+ };
127
+
128
+ test('should pass', () => {
129
+ expect(true).toBeDefined();
130
+ expect(true).toBeDefined();
131
+ expect(true).toBeDefined();
132
+ });
133
+
134
+ function myHelper2() {
135
+ expect(true).toBeDefined();
136
+ expect(true).toBeDefined();
137
+ expect(true).toBeDefined();
138
+ };
139
+ `, (0, _dedent.default)`
140
+ test('should pass', () => {
141
+ expect(true).toBeDefined();
142
+ expect(true).toBeDefined();
143
+ expect(true).toBeDefined();
144
+ });
145
+
146
+ function myHelper() {
147
+ expect(true).toBeDefined();
148
+ expect(true).toBeDefined();
149
+ expect(true).toBeDefined();
150
+ };
151
+ `, (0, _dedent.default)`
152
+ const myHelper1 = () => {
153
+ expect(true).toBeDefined();
154
+ expect(true).toBeDefined();
155
+ expect(true).toBeDefined();
156
+ };
157
+
158
+ test('should pass', function() {
159
+ expect(true).toBeDefined();
160
+ expect(true).toBeDefined();
161
+ expect(true).toBeDefined();
162
+ });
163
+
164
+ const myHelper2 = function() {
165
+ expect(true).toBeDefined();
166
+ expect(true).toBeDefined();
167
+ expect(true).toBeDefined();
168
+ };
169
+ `, {
170
+ code: (0, _dedent.default)`
171
+ test('should pass', () => {
172
+ expect(true).toBeDefined();
173
+ expect(true).toBeDefined();
174
+ expect(true).toBeDefined();
175
+ expect(true).toBeDefined();
176
+ expect(true).toBeDefined();
177
+ expect(true).toBeDefined();
178
+ expect(true).toBeDefined();
179
+ expect(true).toBeDefined();
180
+ expect(true).toBeDefined();
181
+ expect(true).toBeDefined();
182
+ });
183
+ `,
184
+ options: [{
185
+ max: 10
186
+ }]
187
+ }],
188
+ invalid: [{
189
+ code: (0, _dedent.default)`
190
+ test('should not pass', function () {
191
+ expect(true).toBeDefined();
192
+ expect(true).toBeDefined();
193
+ expect(true).toBeDefined();
194
+ expect(true).toBeDefined();
195
+ expect(true).toBeDefined();
196
+ expect(true).toBeDefined();
197
+ });
198
+ `,
199
+ errors: [{
200
+ messageId: 'exceededMaxAssertion',
201
+ line: 7,
202
+ column: 3
203
+ }]
204
+ }, {
205
+ code: (0, _dedent.default)`
206
+ test('should not pass', () => {
207
+ expect(true).toBeDefined();
208
+ expect(true).toBeDefined();
209
+ expect(true).toBeDefined();
210
+ expect(true).toBeDefined();
211
+ expect(true).toBeDefined();
212
+ expect(true).toBeDefined();
213
+ });
214
+ `,
215
+ errors: [{
216
+ messageId: 'exceededMaxAssertion',
217
+ line: 7,
218
+ column: 3
219
+ }]
220
+ }, {
221
+ code: (0, _dedent.default)`
222
+ it('should not pass', () => {
223
+ expect(true).toBeDefined();
224
+ expect(true).toBeDefined();
225
+ expect(true).toBeDefined();
226
+ expect(true).toBeDefined();
227
+ expect(true).toBeDefined();
228
+ expect(true).toBeDefined();
229
+ });
230
+ `,
231
+ errors: [{
232
+ messageId: 'exceededMaxAssertion',
233
+ line: 7,
234
+ column: 3
235
+ }]
236
+ }, {
237
+ code: (0, _dedent.default)`
238
+ it('should not pass', async () => {
239
+ expect(true).toBeDefined();
240
+ expect(true).toBeDefined();
241
+ expect(true).toBeDefined();
242
+ expect(true).toBeDefined();
243
+ expect(true).toBeDefined();
244
+ expect(true).toBeDefined();
245
+ });
246
+ `,
247
+ errors: [{
248
+ messageId: 'exceededMaxAssertion',
249
+ line: 7,
250
+ column: 3
251
+ }]
252
+ }, {
253
+ code: (0, _dedent.default)`
254
+ test('should not pass', () => {
255
+ expect(true).toBeDefined();
256
+ expect(true).toBeDefined();
257
+ expect(true).toBeDefined();
258
+ expect(true).toBeDefined();
259
+ expect(true).toBeDefined();
260
+ expect(true).toBeDefined();
261
+ });
262
+ test('should not pass', () => {
263
+ expect(true).toBeDefined();
264
+ expect(true).toBeDefined();
265
+ expect(true).toBeDefined();
266
+ expect(true).toBeDefined();
267
+ expect(true).toBeDefined();
268
+ expect(true).toBeDefined();
269
+ });
270
+ `,
271
+ errors: [{
272
+ messageId: 'exceededMaxAssertion',
273
+ line: 7,
274
+ column: 3
275
+ }, {
276
+ messageId: 'exceededMaxAssertion',
277
+ line: 15,
278
+ column: 3
279
+ }]
280
+ }, {
281
+ code: (0, _dedent.default)`
282
+ describe('test', () => {
283
+ test('should not pass', () => {
284
+ expect(true).toBeDefined();
285
+ expect(true).toBeDefined();
286
+ expect(true).toBeDefined();
287
+ expect(true).toBeDefined();
288
+ expect(true).toBeDefined();
289
+ expect(true).toBeDefined();
290
+ });
291
+ });
292
+ `,
293
+ errors: [{
294
+ messageId: 'exceededMaxAssertion',
295
+ line: 8,
296
+ column: 5
297
+ }]
298
+ }, {
299
+ code: (0, _dedent.default)`
300
+ test.each(['should', 'not', 'pass'], () => {
301
+ expect(true).toBeDefined();
302
+ expect(true).toBeDefined();
303
+ expect(true).toBeDefined();
304
+ expect(true).toBeDefined();
305
+ expect(true).toBeDefined();
306
+ expect(true).toBeDefined();
307
+ });
308
+ `,
309
+ errors: [{
310
+ messageId: 'exceededMaxAssertion',
311
+ line: 7,
312
+ column: 3
313
+ }]
314
+ }, {
315
+ code: (0, _dedent.default)`
316
+ test('should not pass', () => {
317
+ expect(true).toBeDefined();
318
+ expect(true).toBeDefined();
319
+ });
320
+ `,
321
+ options: [{
322
+ max: 1
323
+ }],
324
+ errors: [{
325
+ messageId: 'exceededMaxAssertion',
326
+ line: 3,
327
+ column: 3
328
+ }]
329
+ }]
330
+ });
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+
3
+ var _utils = require("@typescript-eslint/utils");
4
+ var _dedent = _interopRequireDefault(require("dedent"));
5
+ var _maxNestedDescribe = _interopRequireDefault(require("../max-nested-describe"));
6
+ var _testUtils = require("./test-utils");
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ const ruleTester = new _utils.TSESLint.RuleTester({
9
+ parser: _testUtils.espreeParser,
10
+ parserOptions: {
11
+ ecmaVersion: 2017
12
+ }
13
+ });
14
+ ruleTester.run('max-nested-describe', _maxNestedDescribe.default, {
15
+ valid: [(0, _dedent.default)`
16
+ describe('foo', function() {
17
+ describe('bar', function () {
18
+ describe('baz', function () {
19
+ describe('qux', function () {
20
+ describe('qux', function () {
21
+ it('should get something', () => {
22
+ expect(getSomething()).toBe('Something');
23
+ });
24
+ })
25
+ })
26
+ })
27
+ })
28
+ });
29
+ `, (0, _dedent.default)`
30
+ describe('foo', function() {
31
+ describe('bar', function () {
32
+ describe('baz', function () {
33
+ describe('qux', function () {
34
+ describe('qux', function () {
35
+ it('should get something', () => {
36
+ expect(getSomething()).toBe('Something');
37
+ });
38
+ });
39
+
40
+ fdescribe('qux', () => {
41
+ it('something', async () => {
42
+ expect('something').toBe('something');
43
+ });
44
+ });
45
+ })
46
+ })
47
+ })
48
+ });
49
+ `, (0, _dedent.default)`
50
+ describe('foo', () => {
51
+ describe('bar', () => {
52
+ it('hello', async () => {
53
+ expect('hello').toBe('hello');
54
+ });
55
+ });
56
+ });
57
+
58
+ xdescribe('foo', function() {
59
+ describe('bar', function() {
60
+ it('something', async () => {
61
+ expect('something').toBe('something');
62
+ });
63
+ });
64
+ });
65
+ `, {
66
+ code: (0, _dedent.default)`
67
+ describe('foo', () => {
68
+ describe.only('bar', () => {
69
+ describe.skip('baz', () => {
70
+ it('something', async () => {
71
+ expect('something').toBe('something');
72
+ });
73
+ });
74
+ });
75
+ });
76
+ `,
77
+ options: [{
78
+ max: 3
79
+ }]
80
+ }, {
81
+ code: (0, _dedent.default)`
82
+ it('something', async () => {
83
+ expect('something').toBe('something');
84
+ });
85
+ `,
86
+ options: [{
87
+ max: 0
88
+ }]
89
+ }, (0, _dedent.default)`
90
+ describe('foo', () => {
91
+ describe.each(['hello', 'world'])("%s", (a) => {});
92
+ });
93
+ `, (0, _dedent.default)`
94
+ describe('foo', () => {
95
+ describe.each\`
96
+ foo | bar
97
+ ${1} | ${2}
98
+ \`('$foo $bar', ({ foo, bar }) => {});
99
+ });
100
+ `],
101
+ invalid: [{
102
+ code: (0, _dedent.default)`
103
+ describe('foo', function() {
104
+ describe('bar', function () {
105
+ describe('baz', function () {
106
+ describe('qux', function () {
107
+ describe('quxx', function () {
108
+ describe('over limit', function () {
109
+ it('should get something', () => {
110
+ expect(getSomething()).toBe('Something');
111
+ });
112
+ });
113
+ });
114
+ });
115
+ });
116
+ });
117
+ });
118
+ `,
119
+ errors: [{
120
+ messageId: 'exceededMaxDepth',
121
+ line: 6,
122
+ column: 11
123
+ }]
124
+ }, {
125
+ code: (0, _dedent.default)`
126
+ describe('foo', () => {
127
+ describe('bar', () => {
128
+ describe('baz', () => {
129
+ describe('baz1', () => {
130
+ describe('baz2', () => {
131
+ describe('baz3', () => {
132
+ it('should get something', () => {
133
+ expect(getSomething()).toBe('Something');
134
+ });
135
+ });
136
+
137
+ describe('baz4', () => {
138
+ it('should get something', () => {
139
+ expect(getSomething()).toBe('Something');
140
+ });
141
+ });
142
+ });
143
+ });
144
+ });
145
+
146
+ describe('qux', function () {
147
+ it('should get something', () => {
148
+ expect(getSomething()).toBe('Something');
149
+ });
150
+ });
151
+ })
152
+ });
153
+ `,
154
+ errors: [{
155
+ messageId: 'exceededMaxDepth',
156
+ line: 6,
157
+ column: 11
158
+ }, {
159
+ messageId: 'exceededMaxDepth',
160
+ line: 12,
161
+ column: 11
162
+ }]
163
+ }, {
164
+ code: (0, _dedent.default)`
165
+ fdescribe('foo', () => {
166
+ describe.only('bar', () => {
167
+ describe.skip('baz', () => {
168
+ it('should get something', () => {
169
+ expect(getSomething()).toBe('Something');
170
+ });
171
+ });
172
+
173
+ describe('baz', () => {
174
+ it('should get something', () => {
175
+ expect(getSomething()).toBe('Something');
176
+ });
177
+ });
178
+ });
179
+ });
180
+
181
+ xdescribe('qux', () => {
182
+ it('should get something', () => {
183
+ expect(getSomething()).toBe('Something');
184
+ });
185
+ });
186
+ `,
187
+ options: [{
188
+ max: 2
189
+ }],
190
+ errors: [{
191
+ messageId: 'exceededMaxDepth',
192
+ line: 3,
193
+ column: 5
194
+ }, {
195
+ messageId: 'exceededMaxDepth',
196
+ line: 9,
197
+ column: 5
198
+ }]
199
+ }, {
200
+ code: (0, _dedent.default)`
201
+ describe('qux', () => {
202
+ it('should get something', () => {
203
+ expect(getSomething()).toBe('Something');
204
+ });
205
+ });
206
+ `,
207
+ options: [{
208
+ max: 0
209
+ }],
210
+ errors: [{
211
+ messageId: 'exceededMaxDepth',
212
+ line: 1,
213
+ column: 1
214
+ }]
215
+ }, {
216
+ code: (0, _dedent.default)`
217
+ describe('foo', () => {
218
+ describe.each(['hello', 'world'])("%s", (a) => {});
219
+ });
220
+ `,
221
+ options: [{
222
+ max: 1
223
+ }],
224
+ errors: [{
225
+ messageId: 'exceededMaxDepth',
226
+ line: 2,
227
+ column: 3
228
+ }]
229
+ }, {
230
+ code: (0, _dedent.default)`
231
+ describe('foo', () => {
232
+ describe.each\`
233
+ foo | bar
234
+ ${1} | ${2}
235
+ \`('$foo $bar', ({ foo, bar }) => {});
236
+ });
237
+ `,
238
+ options: [{
239
+ max: 1
240
+ }],
241
+ errors: [{
242
+ messageId: 'exceededMaxDepth',
243
+ line: 2,
244
+ column: 3
245
+ }]
246
+ }]
247
+ });