diff --git a/spec/PromiseObject.spec.js b/spec/PromiseObject.spec.js new file mode 100644 index 0000000..65aaec0 --- /dev/null +++ b/spec/PromiseObject.spec.js @@ -0,0 +1,76 @@ +'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)); + }) + +}) \ No newline at end of file diff --git a/spec/support/jasmine.json b/spec/support/jasmine.json new file mode 100644 index 0000000..370fc44 --- /dev/null +++ b/spec/support/jasmine.json @@ -0,0 +1,11 @@ +{ + "spec_dir": "spec", + "spec_files": [ + "**/*[sS]pec.js" + ], + "helpers": [ + "helpers/**/*.js" + ], + "stopSpecOnExpectationFailure": false, + "random": true +} diff --git a/test.js b/test.js deleted file mode 100644 index 050196d..0000000 --- a/test.js +++ /dev/null @@ -1,33 +0,0 @@ -Promise.object = require('./es6'); -const assert = require('assert'); - -const linked = { - foo: Promise.resolve(1), - bar: { - foobar: Promise.resolve(2) - }, - baz: [1, "two", Promise.resolve(3)], - ok: "four" -} - -linked.linked = linked; - -Promise.object(linked).then(x => { - console.log(x); - assert(x.foo === 1); - assert(x.bar.foobar === 2); - assert(x.baz[0] === 1 && x.baz[1] === "two"); - assert(Array.isArray(x.baz) && x.baz[2] === 3); - assert(x.linked === x); -}); - -Promise.object( - Promise.resolve({ - foo: Promise.resolve({ - bar: Promise.resolve(4) - }) - }) -).then(x => { - console.log(x) - assert(x.foo.bar === 4); -}); \ No newline at end of file