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