[Framework] Add RequireJS configurator

Add a configuration step (as part of the resolve phase)
to the framework layer, where bundle-defined paths and shims
are passed to RequireJS configuration. This permits both
the use of non-AMD modules and the exposure of libraries
across bundles. WTD-568.
This commit is contained in:
Victor Woeltjen
2015-01-02 17:46:50 -08:00
parent d281bd52de
commit 96aaea5e58
8 changed files with 191 additions and 9 deletions

View File

@@ -10,6 +10,7 @@ define(
describe("The bundle resolver", function () {
var mockExtensionResolver,
mockRequireConfigurator,
mockLog,
resolver;
@@ -18,18 +19,27 @@ define(
"extensionResolver",
["resolve"]
);
mockRequireConfigurator = jasmine.createSpyObj(
"requireConfigurator",
["configure"]
);
mockLog = jasmine.createSpyObj(
"$log",
["error", "warn", "info", "debug"]
);
resolver = new BundleResolver(mockExtensionResolver, mockLog);
mockExtensionResolver.resolve.andReturn(Promise.resolve("a"));
resolver = new BundleResolver(
mockExtensionResolver,
mockRequireConfigurator,
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: [ {}, {} ] } }),
@@ -50,6 +60,18 @@ define(
});
});
it("configures require before loading implementations", function () {
var bundles = [
new Bundle("x", { extensions: { tests: [ {}, {}, {} ] } }),
new Bundle("y", { extensions: { tests: [ {}, {} ], others: [ {}, {} ] } }),
new Bundle("z", { extensions: { others: [ {} ] } })
];
resolver.resolveBundles(bundles);
expect(mockRequireConfigurator.configure)
.toHaveBeenCalledWith(bundles);
});
});
}
);