1 | ;
|
2 | var lodash_1 = require('lodash');
|
3 | var rxjs_1 = require('rxjs');
|
4 | var fakeAsync_1 = require('./fakeAsync');
|
5 | var mockPromise_1 = require('./mockPromise');
|
6 | var 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 | request.stream.complete();
|
100 | }
|
101 | else {
|
102 | request.stream.next(result.apply(void 0, request.params));
|
103 | request.stream.complete();
|
104 | }
|
105 | });
|
106 | requests = [];
|
107 | fakeAsync_1.flushMicrotasks();
|
108 | };
|
109 | return mocked;
|
110 | };
|
111 | return MockAsyncService;
|
112 | }());
|
113 | exports.mock = new MockAsyncService();
|
114 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja0FzeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9ja0FzeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1QkFBMkQsUUFBUSxDQUFDLENBQUE7QUFDcEUscUJBQW9DLE1BQU0sQ0FBQyxDQUFBO0FBRTNDLDBCQUFnRCxhQUFhLENBQUMsQ0FBQTtBQUM5RCw0QkFBNEMsZUFBZSxDQUFDLENBQUE7QUF3QjVEO0lBQUE7SUEySEEsQ0FBQztJQTFIQSxrQ0FBTyxHQUFQLFVBQWUsTUFBNEMsRUFBRSxLQUFlO1FBQzNFLE1BQU0sQ0FBQyx5QkFBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELDBDQUFlLEdBQWY7UUFBdUIsZ0JBQWdCO2FBQWhCLFdBQWdCLENBQWhCLHNCQUFnQixDQUFoQixJQUFnQjtZQUFoQiwrQkFBZ0I7O1FBQ3RDLE1BQU0sQ0FBQyx5QkFBVyxDQUFDLGVBQWUsT0FBM0IseUJBQVcsRUFBb0IsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGtDQUFPLEdBQVAsVUFBZSxNQUE0QyxFQUFFLEtBQWU7UUFDM0UsRUFBRSxDQUFDLENBQUMsb0JBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxtQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUE4QixNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQVEsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDRixDQUFDO0lBRUQsMENBQWUsR0FBZixVQUF1QixLQUFVO1FBQ2hDLElB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 |
\ | No newline at end of file |