📤 Deep resolve promises in objects.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.3 KiB

'use strict';
Promise.object = require('../es6');
// Simple object
const testObject1 = {
foo: Promise.resolve(1),
bar: {
foobar: Promise.resolve(2),
},
};
const resolvedObject1 = {
foo: 1,
bar: {
foobar: 2
},
};
// Nested promises with circular reference
const testObject2 = {
foo: Promise.resolve(1),
bar: {
foobar: Promise.resolve(2)
},
baz: [ 1, "two", Promise.resolve(3) ],
};
testObject2.link1 = testObject2;
testObject2.link2 = { link3: testObject2 };
const resolvedObject2 = {
foo: 1,
bar: {
foobar: 2,
},
baz: [ 1, "two", 3 ],
};
resolvedObject2.link1 = resolvedObject2;
resolvedObject2.link2 = { link3: resolvedObject2 };
// Deeply nested promises
const testObject3 = Promise.resolve({
foo: Promise.resolve({
bar: Promise.resolve(
Promise.resolve(5)
),
}),
});
const resolvedObject3 = {
foo: {
bar: 5,
},
};
/* global describe it expect */
describe("Promise.object", () => {
it("Should return resolvedObject1", () => {
return Promise.object(testObject1)
.then(obj => expect(obj).toEqual(resolvedObject1));
})
it("Should return resolvedObject2", () => {
return Promise.object(testObject2)
.then(obj => expect(obj).toEqual(resolvedObject2));
})
it("Should return resolvedObject3", () => {
return Promise.object(testObject3)
.then(obj => expect(obj).toEqual(resolvedObject3));
})
})