aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMerrick Christensen2013-08-25 23:45:58 -0600
committerVojta Jina2013-09-03 14:22:12 -0700
commitf737c97df02918eb5b19bf5c8248fa3e20f9b361 (patch)
tree40de4c1b0fb4ef95eea9b7c02b1fac2f6163f2ee
parent8e48c4ff6abf7083a04cf20312d2b106f4ba5b2c (diff)
downloadangular.js-f737c97df02918eb5b19bf5c8248fa3e20f9b361.tar.bz2
feat(ngMock): allow passing an object literal as shorthand to module
-rw-r--r--src/ngMock/angular-mocks.js16
-rw-r--r--test/ngMock/angular-mocksSpec.js36
2 files changed, 49 insertions, 3 deletions
diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js
index 5e5041cb..6764bf17 100644
--- a/src/ngMock/angular-mocks.js
+++ b/src/ngMock/angular-mocks.js
@@ -1851,9 +1851,11 @@ angular.mock.clearDataCache = function() {
*
* See {@link angular.mock.inject inject} for usage example
*
- * @param {...(string|Function)} fns any number of modules which are represented as string
+ * @param {...(string|Function|Object)} fns any number of modules which are represented as string
* aliases or as anonymous module initialization functions. The modules are used to
- * configure the injector. The 'ng' and 'ngMock' modules are automatically loaded.
+ * configure the injector. The 'ng' and 'ngMock' modules are automatically loaded. If an
+ * object literal is passed they will be register as values in the module, the key being
+ * the module name and the value being what is returned.
*/
window.module = angular.mock.module = function() {
var moduleFns = Array.prototype.slice.call(arguments, 0);
@@ -1865,7 +1867,15 @@ angular.mock.clearDataCache = function() {
} else {
var modules = currentSpec.$modules || (currentSpec.$modules = []);
angular.forEach(moduleFns, function(module) {
- modules.push(module);
+ if (angular.isObject(module) && !angular.isArray(module)) {
+ modules.push(function($provide) {
+ angular.forEach(module, function(value, key) {
+ $provide.value(key, value);
+ });
+ });
+ } else {
+ modules.push(module);
+ }
});
}
}
diff --git a/test/ngMock/angular-mocksSpec.js b/test/ngMock/angular-mocksSpec.js
index 13e08a68..966877b8 100644
--- a/test/ngMock/angular-mocksSpec.js
+++ b/test/ngMock/angular-mocksSpec.js
@@ -520,6 +520,42 @@ describe('ngMock', function() {
});
describe('module', function() {
+
+ describe('object literal format', function() {
+ var mock = { log: 'module' };
+
+ beforeEach(function() {
+ module({
+ 'service': mock,
+ 'other': { some: 'replacement'}
+ },
+ 'ngResource',
+ function ($provide) { $provide.value('example', 'win'); }
+ );
+ });
+
+ it('should inject the mocked module', function() {
+ inject(function(service) {
+ expect(service).toEqual(mock);
+ });
+ });
+
+ it('should support multiple key value pairs', function() {
+ inject(function(service, other) {
+ expect(other.some).toEqual('replacement');
+ expect(service).toEqual(mock);
+ });
+ });
+
+ it('should integrate with string and function', function() {
+ inject(function(service, $resource, example) {
+ expect(service).toEqual(mock);
+ expect($resource).toBeDefined();
+ expect(example).toEqual('win');
+ });
+ });
+ });
+
describe('in DSL', function() {
it('should load module', module(function() {
log += 'module';