From 69c6811f00744dc9c3a319f0fa8df1ad466d0263 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 6 Nov 2014 19:06:26 -0800 Subject: [PATCH] [Framework] Fill in spec for bundle resolver Fill in spec for bundle resolver, WTD-518. --- .../framework/src/resolve/BundleResolver.js | 3 +- .../test/resolve/BundleResolverSpec.js | 48 +++++++++++++++++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/platform/framework/src/resolve/BundleResolver.js b/platform/framework/src/resolve/BundleResolver.js index c08ae27ab6..f95f041420 100644 --- a/platform/framework/src/resolve/BundleResolver.js +++ b/platform/framework/src/resolve/BundleResolver.js @@ -81,7 +81,8 @@ define( * Resolve all extensions exposed by these bundles. * * @param {Bundle[]} bundles the bundles to resolve - * @returns {Object.} an object containing + * @returns {Promise.>} an promise + * for an object containing * key-value pairs, where keys are extension * categories and values are arrays of resolved * extensions belonging to those categories diff --git a/platform/framework/test/resolve/BundleResolverSpec.js b/platform/framework/test/resolve/BundleResolverSpec.js index f6e37a1dc6..2d95422c4f 100644 --- a/platform/framework/test/resolve/BundleResolverSpec.js +++ b/platform/framework/test/resolve/BundleResolverSpec.js @@ -1,14 +1,54 @@ -/*global define,Promise,describe,it,expect,beforeEach*/ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine,runs*/ /** * BundleResolverSpec. Created by vwoeltje on 11/6/14. */ define( - [], - function () { + ["../../src/resolve/BundleResolver", "../../src/load/Bundle"], + function (BundleResolver, Bundle) { "use strict"; - describe("", function () { + describe("The bundle resolver", function () { + var mockExtensionResolver, + mockLog, + resolver; + + beforeEach(function () { + mockExtensionResolver = jasmine.createSpyObj( + "extensionResolver", + ["resolve"] + ); + mockLog = jasmine.createSpyObj( + "$log", + ["error", "warn", "info", "debug"] + ); + resolver = new BundleResolver(mockExtensionResolver, mockLog); + }); + + it("invokes the extension resolver for all bundle extensions", function () { + var result; + + mockExtensionResolver.resolve.andReturn(Promise.resolve("a")); + + resolver.resolveBundles([ + new Bundle("x", { extensions: { tests: [ {}, {}, {} ] } }), + new Bundle("y", { extensions: { tests: [ {}, {} ], others: [ {}, {} ] } }), + new Bundle("z", { extensions: { others: [ {} ] } }) + ]).then(function (v) { result = v; }); + + waitsFor( + function () { return result !== undefined; }, + "promise resolution", + 250 + ); + + // Should get back the result from the resolver, and + // should be binned by extension category. + runs(function () { + expect(result.tests).toEqual(["a", "a", "a", "a", "a"]); + expect(result.others).toEqual(["a", "a", "a"]); + }); + }); }); }