Skip to content

Commit ab4a2e1

Browse files
authored
feat(core): Add flushRequestsOnStop configuration option (#335)
1 parent 48ea1d7 commit ab4a2e1

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed

docs/configuration.md

+16
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,22 @@ polly.configure({
7171
});
7272
```
7373

74+
## flushRequestsOnStop
75+
76+
_Type_: `Boolean`
77+
_Default_: `false`
78+
79+
Await any unresolved requests handled by the polly instance
80+
(via [flush](api#flush)) when [stop](api#stop) is called.
81+
82+
**Example**
83+
84+
```js
85+
polly.configure({
86+
flushRequestsOnStop: true
87+
});
88+
```
89+
7490
## expiresIn
7591

7692
_Type_: `String`

packages/@pollyjs/core/src/defaults/config.js

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export default {
1515
},
1616

1717
logging: false,
18+
flushRequestsOnStop: false,
1819

1920
recordIfMissing: true,
2021
recordFailedRequests: false,

packages/@pollyjs/core/src/polly.js

+4
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,10 @@ export default class Polly {
232232
*/
233233
async stop() {
234234
if (this.mode !== MODES.STOPPED) {
235+
if (this.config.flushRequestsOnStop) {
236+
await this.flush();
237+
}
238+
235239
this.disconnect();
236240
this.logger.disconnect();
237241
await (this.persister && this.persister.persist());

packages/@pollyjs/core/tests/unit/polly-test.js

+29
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,28 @@ describe('Unit | Polly', function() {
169169
expect(recognizedOptions.context).to.equal(fakeContext);
170170
});
171171

172+
it('calls flush when flushRequestsOnStop is enabled', async function() {
173+
let polly = new Polly('squawk', { flushRequestsOnStop: false });
174+
let flushCalled = false;
175+
176+
polly.flush = async () => {
177+
flushCalled = true;
178+
};
179+
180+
await polly.stop();
181+
expect(flushCalled).to.be.false;
182+
183+
polly = new Polly('squawk', { flushRequestsOnStop: true });
184+
flushCalled = false;
185+
186+
polly.flush = async () => {
187+
flushCalled = true;
188+
};
189+
190+
await polly.stop();
191+
expect(flushCalled).to.be.true;
192+
});
193+
172194
describe('configure', function() {
173195
setupPolly();
174196

@@ -481,6 +503,13 @@ describe('Unit | Polly', function() {
481503
expect(this.polly.disconnect());
482504
expect(disconnects.length).to.equal(2);
483505
});
506+
507+
it('.flush()', async function() {
508+
const promise = this.polly.flush();
509+
510+
expect(promise).to.be.a('promise');
511+
await promise;
512+
});
484513
});
485514

486515
describe('Class Methods & Events', function() {

0 commit comments

Comments
 (0)