it("correctly accumulates batches", function () {
const requestAction = metrics.requestMetrics("id", createRequest(shortTimespan, "short.1"));
const beginAction = metrics.beginMetrics(requestAction.payload.id, requestAction.payload.data);
return expectSaga(metrics.queryMetricsSaga)
// Stub out calls to batchAndSendRequests.
.provide([
[matchers.call.fn(metrics.batchAndSendRequests), null],
])
// Dispatch six requests, with delays inserted in order to trigger
// batch sends.
.dispatch(requestAction)
.dispatch(requestAction)
.dispatch(requestAction)
.delay(0)
.dispatch(requestAction)
.delay(0)
.dispatch(requestAction)
.dispatch(requestAction)
.run()
.then((result) => {
const { effects } = result;
// Verify the order of call dispatches.
assert.deepEqual(
effects.call,
[
call(delay, 0),
call(metrics.batchAndSendRequests, [requestAction.payload, requestAction.payload, requestAction.payload]),
call(delay, 0),
call(metrics.batchAndSendRequests, [requestAction.payload]),
call(delay, 0),
call(metrics.batchAndSendRequests, [requestAction.payload, requestAction.payload]),
],
);
// Verify that all beginAction puts were dispatched.
assert.deepEqual(
effects.put,
[
put(beginAction),
put(beginAction),
put(beginAction),
put(beginAction),
put(beginAction),
put(beginAction),
],
);
});
});
请发表评论