1 | ;
|
2 | var mockAsync_1 = require('./mockAsync');
|
3 | var fakeAsync_1 = require('./fakeAsync');
|
4 | describe('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 |