Skip to content

Commit 5e6fee4

Browse files
authored
Allow awaited statements to be next to regular ones (#100)
fixes #98
1 parent 615a24e commit 5e6fee4

File tree

4 files changed

+84
-9
lines changed

4 files changed

+84
-9
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## v3.0.0 - May 4, 2021
4+
5+
### Breaking Changes
6+
7+
- Padding is no longer enforced between statements and `await`ed statements of the same kind.
8+
39
## v1.1.0 - August 14, 2019
410

511
### Changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eslint-plugin-jest-formatting",
3-
"version": "2.0.1",
3+
"version": "3.0.0",
44
"description": "ESLint rules for formatting jest tests",
55
"keywords": [
66
"eslint",

src/rules/padding.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,20 @@ interface PaddingContext {
7979
// Creates a StatementTester to test an ExpressionStatement's first token name
8080
const createTokenTester = (tokenName: string): StatementTester => {
8181
return (node: Node, sourceCode: SourceCode): boolean => {
82-
const token = sourceCode.getFirstToken(node);
82+
let activeNode = node;
8383

84-
return (
85-
node.type === 'ExpressionStatement' &&
86-
token.type === 'Identifier' &&
87-
token.value === tokenName
88-
);
84+
if (activeNode.type === 'ExpressionStatement') {
85+
// In the case of `await`, we actually care about its argument
86+
if (activeNode.expression.type === 'AwaitExpression') {
87+
activeNode = activeNode.expression.argument;
88+
}
89+
90+
const token = sourceCode.getFirstToken(activeNode);
91+
92+
return token.type === 'Identifier' && token.value === tokenName;
93+
}
94+
95+
return false;
8996
};
9097
};
9198

tests/lib/rules/padding-around-expect-groups.spec.js

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const rule = require('../../../lib').rules['padding-around-expect-groups'];
1111

1212
const ruleTester = new RuleTester({
1313
parserOptions: {
14-
ecmaVersion: 6,
14+
ecmaVersion: 2017,
1515
},
1616
});
1717

@@ -63,6 +63,29 @@ describe('someText', () => {
6363
});
6464
});
6565
});
66+
67+
test('awaited expect', async () => {
68+
const abc = 123;
69+
const hasAPromise = () => Promise.resolve('foo');
70+
71+
await expect(hasAPromise()).resolves.toEqual('foo');
72+
expect(abc).toEqual(123);
73+
74+
const efg = 456;
75+
76+
expect(123).toEqual(abc);
77+
await expect(hasAPromise()).resolves.toEqual('foo');
78+
79+
const hij = 789;
80+
81+
await expect(hasAPromise()).resolves.toEqual('foo');
82+
await expect(hasAPromise()).resolves.toEqual('foo');
83+
84+
const somethingElseAsync = () => Promise.resolve('bar');
85+
await somethingElseAsync();
86+
87+
await expect(hasAPromise()).resolves.toEqual('foo');
88+
});
6689
`;
6790

6891
const invalid = `
@@ -103,6 +126,25 @@ describe('someText', () => {
103126
});
104127
});
105128
});
129+
130+
test('awaited expect', async () => {
131+
const abc = 123;
132+
const hasAPromise = () => Promise.resolve('foo');
133+
await expect(hasAPromise()).resolves.toEqual('foo');
134+
expect(abc).toEqual(123);
135+
136+
const efg = 456;
137+
expect(123).toEqual(abc);
138+
await expect(hasAPromise()).resolves.toEqual('foo');
139+
140+
const hij = 789;
141+
await expect(hasAPromise()).resolves.toEqual('foo');
142+
await expect(hasAPromise()).resolves.toEqual('foo');
143+
144+
const somethingElseAsync = () => Promise.resolve('bar');
145+
await somethingElseAsync();
146+
await expect(hasAPromise()).resolves.toEqual('foo');
147+
});
106148
`;
107149

108150
ruleTester.run('padding-around-expect-groups', rule, {
@@ -111,7 +153,7 @@ ruleTester.run('padding-around-expect-groups', rule, {
111153
{
112154
code: invalid,
113155
filename: 'src/component.test.jsx',
114-
errors: 6,
156+
errors: 10,
115157
output: valid,
116158
},
117159
{
@@ -148,6 +190,26 @@ ruleTester.run('padding-around-expect-groups', rule, {
148190
line: 32,
149191
column: 7
150192
},
193+
{
194+
message: 'Expected blank line before this statement.',
195+
line: 43,
196+
column: 3
197+
},
198+
{
199+
message: 'Expected blank line before this statement.',
200+
line: 47,
201+
column: 3
202+
},
203+
{
204+
message: 'Expected blank line before this statement.',
205+
line: 51,
206+
column: 3
207+
},
208+
{
209+
message: 'Expected blank line before this statement.',
210+
line: 56,
211+
column: 3
212+
},
151213
],
152214
output: valid,
153215
},

0 commit comments

Comments
 (0)