From 794d11e715a953aedf4bb37528b35379a99fa397 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 6 Nov 2014 15:20:26 -0800 Subject: [PATCH] [Framework] Add spec for Bundle Add spec for Bundle, used by the framework layer. WTD-518. --- .../framework/test/load/BundleLoaderSpec.js | 2 +- platform/framework/test/load/BundleSpec.js | 66 ++++++++++++++++++- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/platform/framework/test/load/BundleLoaderSpec.js b/platform/framework/test/load/BundleLoaderSpec.js index a0469e118a..38cd0080f0 100644 --- a/platform/framework/test/load/BundleLoaderSpec.js +++ b/platform/framework/test/load/BundleLoaderSpec.js @@ -98,7 +98,7 @@ define( }); - it("warns about, then ignores, missing bundle declarations", function () { + it("warns about, then ignores, malformed bundle declarations", function () { // File-not-found mockHttp.get.andReturn(Promise.resolve(["I am not a valid bundle."])); diff --git a/platform/framework/test/load/BundleSpec.js b/platform/framework/test/load/BundleSpec.js index 12ce535b58..e7ebccd78c 100644 --- a/platform/framework/test/load/BundleSpec.js +++ b/platform/framework/test/load/BundleSpec.js @@ -4,12 +4,72 @@ * BundleSpec. Created by vwoeltje on 11/6/14. */ define( - [], - function () { + ["../../src/load/Bundle", "../../src/Constants"], + function (Bundle, Constants) { // Verify against constants, too "use strict"; - describe("", function () { + describe("A bundle", function () { + var PATH = "some/path", + KEY = "someKey"; + it("reports its path", function () { + expect(new Bundle(PATH, {}).getPath()).toEqual(PATH); + }); + + it("reports its source path", function () { + expect(new Bundle(PATH, { "sources": "test-src" }).getSourcePath()).toEqual( + PATH + Constants.SEPARATOR + "test-src" + ); + }); + + it("reports the default source path if none is configured", function () { + expect(new Bundle(PATH, {}).getSourcePath()).toEqual( + PATH + Constants.SEPARATOR + Constants.DEFAULT_BUNDLE.sources + ); + }); + + it("reports its resource path", function () { + expect(new Bundle(PATH, { "resources": "test-res" }).getResourcePath()).toEqual( + PATH + Constants.SEPARATOR + "test-res" + ); + }); + + it("reports the default resource path if none is configured", function () { + expect(new Bundle(PATH, {}).getResourcePath()).toEqual( + PATH + Constants.SEPARATOR + Constants.DEFAULT_BUNDLE.resources + ); + }); + + it("has a log-friendly name for the bundle which includes its key and path", function () { + // Use indexof to look for the bundle's key + var logName = new Bundle(PATH, { key: KEY }).getLogName(); + expect(logName.indexOf(KEY)).not.toEqual(-1); + expect(logName.indexOf(PATH)).not.toEqual(-1); + }); + + it("reports all declared extension categories", function () { + var bundle = new Bundle(PATH, { + extensions: { things: [], tests: [], foos: [] } + }); + + expect(bundle.getExtensionCategories().sort()).toEqual( + ["foos", "tests", "things"] + ); + }); + + it("reports all extensions that have been declared", function () { + var bundle = new Bundle(PATH, { + extensions: { things: [ {}, {}, {} ] } + }); + expect(bundle.getExtensions("things").length).toEqual(3); + }); + + it("reports an empty list for extensions that have not been declared", function () { + var bundle = new Bundle(PATH, { + extensions: { things: [ {}, {}, {} ] } + }); + expect(bundle.getExtensions("stuffs").length).toEqual(0); + }); }); } ); \ No newline at end of file