1 | import { Scheduler } from 'rxjs';
|
2 |
|
3 | let requestQueue = [];
|
4 | let timeElapsed: number = 0;
|
5 |
|
6 | import { fakeAsync as ngFakeAsync, flushMicrotasks, tick as ngTick } from '@angular/core/testing';
|
7 | export { flushMicrotasks };
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 | export function rlFakeAsync(fn: Function): { (done?: { (): void }): void } {
|
21 | return ngFakeAsync(function (...args) {
|
22 | const originalNow = Scheduler.async.now;
|
23 | timeElapsed = 0;
|
24 | Scheduler.async.now = () => timeElapsed;
|
25 | requestQueue = [];
|
26 | let res = fn(...args);
|
27 | flushMicrotasks();
|
28 | if (requestQueue.some(request => request.pending)) {
|
29 | throw new Error('There are still pending requests. Please be sure to flush all of your requests');
|
30 | }
|
31 | Scheduler.async.now = originalNow;
|
32 | return res;
|
33 | });
|
34 | }
|
35 |
|
36 | export function rlQueueRequest(request): void {
|
37 | requestQueue.push(request);
|
38 | }
|
39 |
|
40 | export function rlTick(milliseconds: number) {
|
41 | timeElapsed += milliseconds;
|
42 | ngTick(milliseconds);
|
43 | }
|