From 0d80494618cb1f9612a48596caf067cccbdff30a Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 6 Nov 2014 19:29:55 -0800 Subject: [PATCH] [Framework] Add spec for ImplementationLoader WTD-518. --- .../test/resolve/ImplementationLoaderSpec.js | 75 ++++++++++++++++++- 1 file changed, 71 insertions(+), 4 deletions(-) diff --git a/platform/framework/test/resolve/ImplementationLoaderSpec.js b/platform/framework/test/resolve/ImplementationLoaderSpec.js index 91e944c307..5a2491de1d 100644 --- a/platform/framework/test/resolve/ImplementationLoaderSpec.js +++ b/platform/framework/test/resolve/ImplementationLoaderSpec.js @@ -1,14 +1,81 @@ -/*global define,Promise,describe,it,expect,beforeEach*/ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,runs*/ /** * ImplementationLoaderSpec. Created by vwoeltje on 11/6/14. */ define( - [], - function () { + ["../../src/resolve/ImplementationLoader"], + function (ImplementationLoader) { "use strict"; - describe("", function () { + describe("The implementation loader", function () { + var required, + loader; + + function mockRequire(names, fulfill, reject) { + required = { + names: names, + fulfill: fulfill, + reject: reject + }; + } + + beforeEach(function () { + required = undefined; + loader = new ImplementationLoader(mockRequire); + }); + + it("passes script names to require", function () { + loader.load("xyz.js"); + expect(required.names).toEqual(["xyz.js"]); + }); + + it("wraps require results in a Promise that can resolve", function () { + var result; + + // Load and get the result + loader.load("xyz.js").then(function (v) { result = v; }); + + expect(result).toBeUndefined(); + + required.fulfill("test result"); + + waitsFor( + function () { return result !== undefined; }, + "promise resolution", + 250 + ); + + runs(function () { + expect(result).toEqual("test result"); + }); + }); + + it("wraps require results in a Promise that can reject", function () { + var result, + rejection; + + // Load and get the result + loader.load("xyz.js").then( + function (v) { result = v; }, + function (v) { rejection = v; } + ); + + expect(result).toBeUndefined(); + + required.reject("test result"); + + waitsFor( + function () { return rejection !== undefined; }, + "promise resolution", + 250 + ); + + runs(function () { + expect(result).toBeUndefined(); + expect(rejection).toEqual("test result"); + }); + }); }); }