UNPKG

8.72 kBJavaScriptView Raw
1"use strict";
2var lodash_1 = require('lodash');
3var rxjs_1 = require('rxjs');
4var fakeAsync_1 = require('./fakeAsync');
5var mockPromise_1 = require('./mockPromise');
6var MockAsyncService = (function () {
7 function MockAsyncService() {
8 }
9 MockAsyncService.prototype.promise = function (result, share) {
10 return mockPromise_1.mockPromise.promise(result, share);
11 };
12 MockAsyncService.prototype.rejectedPromise = function () {
13 var params = [];
14 for (var _i = 0; _i < arguments.length; _i++) {
15 params[_i - 0] = arguments[_i];
16 }
17 return mockPromise_1.mockPromise.rejectedPromise.apply(mockPromise_1.mockPromise, params);
18 };
19 MockAsyncService.prototype.request = function (result, share) {
20 if (lodash_1.isUndefined(share)) {
21 share = false;
22 }
23 if (lodash_1.isFunction(result)) {
24 return this.makeDynamicMockRequest(result, share);
25 }
26 else {
27 return this.makeMockRequest(result, share);
28 }
29 };
30 MockAsyncService.prototype.rejectedRequest = function (error) {
31 var mocked = this.makeMockRequest(null, false);
32 mocked.rejected = true;
33 mocked.rejectParam = error;
34 return mocked;
35 };
36 MockAsyncService.prototype.flushAll = function (service) {
37 lodash_1.each(service, function (request) {
38 if (request && lodash_1.isFunction(request.flush)) {
39 request.flush();
40 }
41 });
42 };
43 MockAsyncService.prototype.makeMockRequest = function (result, share) {
44 return this.makeDynamicMockRequest(function () { return result; }, share);
45 };
46 MockAsyncService.prototype.makeDynamicMockRequest = function (result, shareParam) {
47 var share = shareParam;
48 ;
49 var requests = [];
50 var mocked;
51 // Return a function that will build a pending promise when called
52 var requestBuilder = (function () {
53 var args = [];
54 for (var _i = 0; _i < arguments.length; _i++) {
55 args[_i - 0] = arguments[_i];
56 }
57 if (share && lodash_1.some(requests) && lodash_1.first(requests).pending) {
58 return lodash_1.first(requests).observable;
59 }
60 var newRequest = {
61 resolve: null,
62 reject: null,
63 params: args,
64 stream: null,
65 observable: null,
66 rejected: mocked.rejected,
67 rejectParam: mocked.rejectParam,
68 pending: true,
69 };
70 newRequest.stream = new rxjs_1.Subject();
71 newRequest.observable = newRequest.stream.asObservable();
72 requests.push(newRequest);
73 fakeAsync_1.rlQueueRequest(newRequest);
74 return newRequest.observable;
75 });
76 var spiedBuilder = sinon.spy(requestBuilder);
77 mocked = spiedBuilder;
78 // Mark promise to be rejected
79 mocked.reject = function (error) {
80 mocked.rejected = true;
81 mocked.rejectParam = error;
82 };
83 // Mark promise to be shared in builder
84 mocked.share = function (shareParam) {
85 if (lodash_1.isUndefined(shareParam)) {
86 share = true;
87 }
88 share = shareParam;
89 };
90 // If current request, resolve and clear
91 mocked.flush = function () {
92 lodash_1.each(requests, function (request) {
93 if (!request.pending) {
94 return;
95 }
96 request.pending = false;
97 if (request.rejected) {
98 request.stream.error(request.rejectParam);
99 }
100 else {
101 request.stream.next(result.apply(void 0, request.params));
102 request.stream.complete();
103 }
104 });
105 requests = [];
106 fakeAsync_1.flushMicrotasks();
107 };
108 return mocked;
109 };
110 return MockAsyncService;
111}());
112exports.mock = new MockAsyncService();
113//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja0FzeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9ja0FzeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1QkFBMkQsUUFBUSxDQUFDLENBQUE7QUFDcEUscUJBQW9DLE1BQU0sQ0FBQyxDQUFBO0FBRTNDLDBCQUFnRCxhQUFhLENBQUMsQ0FBQTtBQUM5RCw0QkFBNEMsZUFBZSxDQUFDLENBQUE7QUF3QjVEO0lBQUE7SUEwSEEsQ0FBQztJQXpIQSxrQ0FBTyxHQUFQLFVBQWUsTUFBNEMsRUFBRSxLQUFlO1FBQzNFLE1BQU0sQ0FBQyx5QkFBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELDBDQUFlLEdBQWY7UUFBdUIsZ0JBQWdCO2FBQWhCLFdBQWdCLENBQWhCLHNCQUFnQixDQUFoQixJQUFnQjtZQUFoQiwrQkFBZ0I7O1FBQ3RDLE1BQU0sQ0FBQyx5QkFBVyxDQUFDLGVBQWUsT0FBM0IseUJBQVcsRUFBb0IsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGtDQUFPLEdBQVAsVUFBZSxNQUE0QyxFQUFFLEtBQWU7UUFDM0UsRUFBRSxDQUFDLENBQUMsb0JBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxtQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUE4QixNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQVEsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDRixDQUFDO0lBRUQsMENBQWUsR0FBZixVQUF1QixLQUFVO1FBQ2hDLElB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
\No newline at end of file