UNPKG

3.05 kBJavaScriptView Raw
1/* jslint node: true */
2/* global describe, it, expect */
3
4"use strict";
5
6var promise = require("../js/promise");
7
8describe("promise.js", function () {
9
10 // promised is resolved after the "onFulfilled" func is added
11 it("- promise resolve after", function (done) {
12
13 var aPromise = promise.make(function(resolve, reject) {
14 setTimeout(function() {
15 expect(aPromise.state).toBe('PENDING');
16 resolve('success');
17 expect(aPromise.thenCalled).toBe(true);
18 expect(aPromise.state).toBe('FULFILLED');
19 done();
20 }, 1000);
21 });
22
23 aPromise
24 .onFulfilled(function(result) {
25 expect(aPromise.state).toBe('FULFILLED');
26 expect(result).toBe('success');
27 aPromise.thenCalled = true;
28 });
29 });
30
31 // promised is resolved before the "onFulfilled" func is added
32 it("- promise resolve before", function (done) {
33
34 var aPromise = promise.make(function(resolve, reject) {
35 expect(this.state).toBe('PENDING');
36 resolve('success');
37 expect(this.state).toBe('FULFILLED');
38 });
39
40 setTimeout(function() {
41 // Should already be fulfilled
42 expect(aPromise.state).toBe('FULFILLED');
43 aPromise
44 .onFulfilled(function(result) {
45 expect(result).toBe('success');
46 done();
47 });
48 }, 1000);
49 });
50
51 // promised is rejected after the "onRejected" func is added
52 it("- promise reject after", function (done) {
53
54 var aPromise = promise.make(function(resolve, reject) {
55 setTimeout(function() {
56 expect(aPromise.state).toBe('PENDING');
57 reject('failed');
58 expect(aPromise.catchCalled).toBe(true);
59 expect(aPromise.state).toBe('REJECTED');
60 done();
61 }, 1000);
62 });
63
64 aPromise
65 .onRejected(function(error) {
66 expect(error).toBe('failed');
67 aPromise.catchCalled = true;
68 });
69 });
70
71 // promised is rejected before the "onRejected" func is added
72 it("- promise reject before", function (done) {
73
74 var aPromise = promise.make(function(resolve, reject) {
75 expect(this.state).toBe('PENDING');
76 reject('failed');
77 expect(this.state).toBe('REJECTED');
78 });
79
80 setTimeout(function() {
81 // Should already be rejected
82 expect(aPromise.state).toBe('REJECTED');
83 aPromise
84 .onRejected(function(error) {
85 expect(error).toBe('failed');
86 done();
87 });
88 }, 1000);
89 });
90});