VulpesOS/gaia/apps/keyboard/test/unit/mock_promise_test.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

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);
});
});
});
});
});
});
});