UNPKG

@dasch-swiss/dsp-js

Version:

JavaScript library that handles API requests to Knora

68 lines 3.19 kB
import { of } from "rxjs"; import { switchMap } from "rxjs"; import { TestScheduler } from "rxjs/testing"; import { retryOnError } from "./retryOnError"; describe("RetryOnError Operator", function () { var scheduler; // https://stackoverflow.com/questions/57406445/rxjs-marble-testing-retrywhen var createRetryableStream = function () { var _a; var obs$ = []; for (var _i = 0; _i < arguments.length; _i++) { obs$[_i] = arguments[_i]; } var http = jasmine.createSpy("http"); (_a = http.and).returnValues.apply(_a, obs$); return of(undefined).pipe(switchMap(function () { return http(); })); }; beforeEach(function () { scheduler = new TestScheduler(function (actual, expected) { expect(actual).toEqual(expected); }); }); it("should get a completed response", function () { scheduler.run(function (_a) { var cold = _a.cold, expectObservable = _a.expectObservable; var values = { a: 20 }; var source$ = createRetryableStream(cold("a|", values)); var expectedMarble = "a|"; var expectedValues = { a: 20 }; var result$ = source$.pipe(retryOnError(1, 1, [0], true)); expectObservable(result$).toBe(expectedMarble, expectedValues); }); }); it("should get a completed response after 1 unsuccessful request", function () { scheduler.run(function (_a) { var cold = _a.cold, expectObservable = _a.expectObservable; var values = { a: 20 }; var ajaxError = { status: 0 }; var source$ = createRetryableStream(cold("#", undefined, ajaxError), cold("a|", values)); var expectedMarble = "-a|"; var expectedValues = { a: 20 }; var result$ = source$.pipe(retryOnError(1, 1, [0], true)); expectObservable(result$).toBe(expectedMarble, expectedValues); }); }); it("should get an error after 2 unsuccessful requests", function () { scheduler.run(function (_a) { var cold = _a.cold, expectObservable = _a.expectObservable; var values = { a: 20 }; var ajaxError = { status: 0 }; var source$ = createRetryableStream(cold("#", undefined, ajaxError), cold("#", undefined, ajaxError), cold("a|", values)); var expectedMarble = "-#"; var result$ = source$.pipe(retryOnError(1, 1, [0], true)); expectObservable(result$).toBe(expectedMarble, undefined, ajaxError); }); }); it("should not retry on certain error status", function () { scheduler.run(function (_a) { var cold = _a.cold, expectObservable = _a.expectObservable; var ajaxError = { status: 400 }; var source$ = createRetryableStream(cold("#", undefined, ajaxError), cold("#", undefined, ajaxError)); var expectedMarble = "#"; var result$ = source$.pipe(retryOnError(1, 1, [0], true)); expectObservable(result$).toBe(expectedMarble, undefined, ajaxError); }); }); }); //# sourceMappingURL=retryOnError.spec.js.map