UNPKG

12.8 kBJavaScriptView Raw
1"use strict";
2var mockAsync_1 = require('./mockAsync');
3var fakeAsync_1 = require('./fakeAsync');
4describe('mockPromise', function () {
5 it('should create a promise that resolves when flushed', fakeAsync_1.rlFakeAsync(function () {
6 var mockedPromise = mockAsync_1.mock.promise({ value: 10 });
7 mockedPromise()
8 .then(function (result) {
9 expect(result.value).to.equal(10);
10 });
11 mockedPromise.flush();
12 }));
13 it('should create a promise that resolves with dynamic content when flushed', fakeAsync_1.rlFakeAsync(function () {
14 var mockedPromise = mockAsync_1.mock.promise(function (value1, value2) {
15 return { value: value1 + value2 };
16 });
17 mockedPromise(5, 3)
18 .then(function (result) {
19 expect(result.value).to.equal(8);
20 });
21 mockedPromise.flush();
22 }));
23 it('should create a promise that is rejected', fakeAsync_1.rlFakeAsync(function () {
24 var mockedPromise = mockAsync_1.mock.rejectedPromise(new Error('an error'));
25 mockedPromise()
26 .then(function () {
27 assert.fail(null, null, 'Promise should be rejected, not resolved');
28 }, function (error) {
29 expect(error.message).to.equal('an error');
30 });
31 mockedPromise.flush();
32 }));
33 it('should create a promise and set it to be rejected', fakeAsync_1.rlFakeAsync(function () {
34 var mockedPromise = mockAsync_1.mock.promise({ value: 3 });
35 mockedPromise.reject(new Error('error message'));
36 mockedPromise()
37 .then(function () {
38 assert.fail(null, null, 'Promise should be rejected, not resolved');
39 }, function (error) {
40 expect(error.message).to.equal('error message');
41 });
42 mockedPromise.flush();
43 }));
44 it('should be able to reuse mocked promises', fakeAsync_1.rlFakeAsync(function () {
45 var mockedPromise = mockAsync_1.mock.promise({ value: 3 }, true);
46 mockedPromise.reject(new Error('error message'));
47 mockedPromise()
48 .then(function () { return null; }, function (error) {
49 mockedPromise.rejected = false;
50 mockedPromise()
51 .then(function (result) {
52 expect(result.value).to.equal(3);
53 });
54 mockedPromise.flush();
55 });
56 mockedPromise.flush();
57 }));
58 it('should allow unique parameters with successive calls', fakeAsync_1.rlFakeAsync(function () {
59 var mockedPromise = mockAsync_1.mock.promise(function (value1, value2) {
60 return { value: value1 + value2 };
61 }, true);
62 mockedPromise(5, 3)
63 .then(function (result) {
64 expect(result.value).to.equal(8);
65 mockedPromise(8, 2)
66 .then(function (result) {
67 expect(result.value).to.equal(10);
68 });
69 mockedPromise.flush();
70 });
71 mockedPromise.flush();
72 }));
73 it('should reuse a pending promise when sharing', function () {
74 var mockedPromise = mockAsync_1.mock.promise({ value: 3 }, true);
75 expect(mockedPromise()).to.equal(mockedPromise());
76 });
77 it('should not reuse a pending promise by default or not sharing', function () {
78 var mockedPromise = mockAsync_1.mock.promise({ value: 3 });
79 expect(mockedPromise()).to.not.equal(mockedPromise());
80 mockedPromise = mockAsync_1.mock.promise({ value: 3 }, false);
81 expect(mockedPromise()).to.not.equal(mockedPromise());
82 });
83 it('should flush all requests on an unshared promise', fakeAsync_1.rlFakeAsync(function () {
84 var mockedPromise = mockAsync_1.mock.promise(function (result) { return result; });
85 Promise.all([
86 mockedPromise(5),
87 mockedPromise(10),
88 ]).then(function (_a) {
89 var result1 = _a[0], result2 = _a[1];
90 expect(result1).to.equal(5);
91 expect(result2).to.equal(10);
92 });
93 mockedPromise.flush();
94 }));
95 it('should spy on the promise function', function () {
96 var mockedPromise = mockAsync_1.mock.promise({ value: 3 });
97 mockedPromise(6);
98 sinon.assert.calledOnce(mockedPromise);
99 sinon.assert.calledWith(mockedPromise, 6);
100 });
101 it('should flush all promises on an object', fakeAsync_1.rlFakeAsync(function () {
102 var service = {
103 promise1: mockAsync_1.mock.promise({ value: 3 }),
104 promise2: mockAsync_1.mock.promise({ value: 4 }),
105 };
106 Promise.all([
107 service.promise1(),
108 service.promise2(),
109 ]).then(function (_a) {
110 var result1 = _a[0], result2 = _a[1];
111 expect(result1.value).to.equal(3);
112 expect(result2.value).to.equal(4);
113 });
114 mockAsync_1.mock.flushAll(service);
115 }));
116 it('should work with Promise.resolve and Promise.all', fakeAsync_1.rlFakeAsync(function () {
117 var mockedPromises = [
118 mockAsync_1.mock.promise(5),
119 mockAsync_1.mock.promise(10),
120 ];
121 var whens = mockedPromises.map(function (mocked) { return Promise.resolve(mocked()); });
122 Promise.all(whens).then(function (_a) {
123 var result1 = _a[0], result2 = _a[1];
124 expect(result1).to.equal(5);
125 expect(result2).to.equal(10);
126 });
127 mockAsync_1.mock.flushAll(mockedPromises);
128 }));
129});
130//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja1Byb21pc2UudGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtb2NrUHJvbWlzZS50ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXFDLGFBQWEsQ0FBQyxDQUFBO0FBQ25ELDBCQUE0QixhQUFhLENBQUMsQ0FBQTtBQVcxQyxRQUFRLENBQUMsYUFBYSxFQUFFO0lBQ3ZCLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSx1QkFBVyxDQUFDO1FBQ3BFLElBQUksYUFBYSxHQUE4QixnQkFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLGFBQWEsRUFBRTthQUNiLElBQUksQ0FBQyxVQUFDLE1BQWlCO1lBQ3ZCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVKLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRUosRUFBRSxDQUFDLHlFQUF5RSxFQUFFLHVCQUFXLENBQUM7UUFDekYsSUFBSSxhQUFhLEdBQThCLGdCQUFJLENBQUMsT0FBTyxDQUFDLFVBQUMsTUFBYyxFQUFFLE1BQWM7WUFDMUYsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2pCLElBQUksQ0FBQyxVQUFDLE1BQWlCO1lBQ3ZCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVKLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQyxD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
\No newline at end of file