Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
150 lines
3.4 KiB
JavaScript
Executable file
150 lines
3.4 KiB
JavaScript
Executable file
'use strict';
|
|
|
|
/* global MockPromise */
|
|
|
|
require('/shared/test/unit/mocks/mock_promise.js');
|
|
|
|
suite('MockPromse', function() {
|
|
var state;
|
|
var resolveFn;
|
|
var rejectFn;
|
|
var resolveTo;
|
|
var rejectTo;
|
|
|
|
var p, p0, p1, p2, p3;
|
|
|
|
setup(function() {
|
|
this.sinon.spy(window, 'MockPromise');
|
|
|
|
p = new MockPromise(function callback(resolve, reject) {
|
|
state = 'callback';
|
|
resolveFn = resolve;
|
|
rejectFn = reject;
|
|
}).then(function(val) {
|
|
state = 'resolve1';
|
|
resolveTo = val;
|
|
}).then(function(val) {
|
|
state = 'resolve2';
|
|
resolveTo = val;
|
|
}).then(function(val) {
|
|
state = 'resolve3';
|
|
resolveTo = val;
|
|
}).catch(function(err) {
|
|
state = 'reject4';
|
|
rejectTo = err;
|
|
});
|
|
});
|
|
|
|
suite('callback', function() {
|
|
setup(function() {
|
|
p0 = window.MockPromise.firstCall.returnValue;
|
|
p0.mExecuteCallback(function resolve(val) {
|
|
state = 'resolve0';
|
|
resolveTo = val;
|
|
}, function reject(err) {
|
|
state = 'reject0';
|
|
rejectTo = err;
|
|
});
|
|
|
|
assert.equal(state, 'callback');
|
|
});
|
|
|
|
test('reject', function() {
|
|
var error = {};
|
|
rejectFn(error);
|
|
|
|
assert.equal(state, 'reject0');
|
|
assert.equal(rejectTo, error);
|
|
});
|
|
|
|
suite('resolve', function() {
|
|
var obj;
|
|
setup(function() {
|
|
obj = {};
|
|
resolveFn(obj);
|
|
});
|
|
|
|
test('resolve', function() {
|
|
assert.equal(state, 'resolve0');
|
|
assert.equal(resolveTo, obj);
|
|
});
|
|
|
|
test('reject1', function() {
|
|
var err1 = {};
|
|
p0.mRejectToError(err1);
|
|
|
|
assert.equal(state, 'reject4');
|
|
assert.equal(rejectTo, err1);
|
|
});
|
|
|
|
suite('resolve1', function() {
|
|
var obj1;
|
|
setup(function() {
|
|
obj1 = {};
|
|
p0.mFulfillToValue(obj1);
|
|
p1 = p0.mGetNextPromise();
|
|
});
|
|
|
|
test('resolve1', function() {
|
|
assert.equal(state, 'resolve1');
|
|
assert.equal(resolveTo, obj1);
|
|
});
|
|
|
|
test('reject2', function() {
|
|
var err2 = {};
|
|
p1.mRejectToError(err2);
|
|
|
|
assert.equal(state, 'reject4');
|
|
assert.equal(rejectTo, err2);
|
|
});
|
|
|
|
suite('resolve2', function() {
|
|
var obj2;
|
|
setup(function() {
|
|
obj2 = {};
|
|
p1.mFulfillToValue(obj2);
|
|
p2 = p1.mGetNextPromise();
|
|
});
|
|
|
|
test('resolve2', function() {
|
|
assert.equal(state, 'resolve2');
|
|
assert.equal(resolveTo, obj2);
|
|
});
|
|
|
|
test('reject3', function() {
|
|
var err3 = {};
|
|
p2.mRejectToError(err3);
|
|
|
|
assert.equal(state, 'reject4');
|
|
assert.equal(rejectTo, err3);
|
|
});
|
|
|
|
suite('resolve3', function() {
|
|
var obj3;
|
|
setup(function() {
|
|
obj3 = {};
|
|
p2.mFulfillToValue(obj3);
|
|
p3 = p2.mGetNextPromise();
|
|
});
|
|
|
|
test('resolve3', function() {
|
|
assert.equal(state, 'resolve3');
|
|
assert.equal(resolveTo, obj3);
|
|
|
|
var p4 = p3.catch.firstCall.returnValue;
|
|
assert.equal(p4, p);
|
|
});
|
|
|
|
test('reject4', function() {
|
|
var err4 = {};
|
|
p3.mRejectToError(err4);
|
|
|
|
assert.equal(state, 'reject4');
|
|
assert.equal(rejectTo, err4);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|