[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:
@@ -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);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
);
|
||||
30
platform/framework/test/resolve/RequireConfiguratorSpec.js
Normal file
30
platform/framework/test/resolve/RequireConfiguratorSpec.js
Normal file
@@ -0,0 +1,30 @@
|
||||
/*global define,describe,it,expect,beforeEach,waitsFor,jasmine,runs*/
|
||||
|
||||
define(
|
||||
["../../src/resolve/RequireConfigurator"],
|
||||
function (RequireConfigurator) {
|
||||
"use strict";
|
||||
|
||||
describe("The RequireJS configurator", function () {
|
||||
var mockRequire,
|
||||
configurator;
|
||||
|
||||
beforeEach(function () {
|
||||
mockRequire = jasmine.createSpyObj(
|
||||
"requirejs",
|
||||
[ "config" ]
|
||||
);
|
||||
configurator = new RequireConfigurator(mockRequire);
|
||||
});
|
||||
|
||||
it("configures RequireJS when invoked", function () {
|
||||
// Verify precondition - no config call
|
||||
expect(mockRequire.config).not.toHaveBeenCalled();
|
||||
// Configure with an empty set of bundles
|
||||
configurator.configure([]);
|
||||
// Should have invoked require.config
|
||||
expect(mockRequire.config).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
}
|
||||
);
|
||||
@@ -10,5 +10,6 @@
|
||||
"register/ServiceCompositor",
|
||||
"resolve/BundleResolver",
|
||||
"resolve/ExtensionResolver",
|
||||
"resolve/ImplementationLoader"
|
||||
"resolve/ImplementationLoader",
|
||||
"resolve/RequireConfigurator"
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user