diff --git a/reflekt.js b/reflekt.js index c77c0ae..2313d8d 100644 --- a/reflekt.js +++ b/reflekt.js @@ -67,10 +67,16 @@ function ObjectResolver(items) { /** removes an item with the given name from the ObjectResolver - @param {String} name - the name of the item to remove + @param {String|Array} name - the name(s) of the item to remove */ function remove(name) { - delete items[name]; + if (isArray(name)) { + name.forEach(function(name) { + delete items[name]; + }); + } else { + delete items[name]; + } } resolve.items = items; diff --git a/test/ObjectResolver.js b/test/ObjectResolver.js index 0f2e50c..e492c8a 100644 --- a/test/ObjectResolver.js +++ b/test/ObjectResolver.js @@ -61,6 +61,44 @@ describe('ObjectResolver', function() { } }); + it('should remove all items in an array', function() { + var that = this; + + this.resolver.add({ + bar: true, + dar: true, + zar: true + }); + + check([ + 'bar', + 'dar', + 'zar' + ], true); + + this.resolver.remove([ + 'bar', + 'dar', + 'zar' + ]); + + check([ + 'bar', + 'dar', + 'zar' + ], false); + + function check(values, shouldExist) { + values.forEach(function(name) { + if (shouldExist) { + should(that.resolver(name)).equal(true); + } else { + should(that.resolver(name)).equal(undefined); + } + }); + } + }); + it('should store lifetimes values when adding an item', function() { this.resolver.add('foo', 'foo', 1); this.resolver.lifetimes.foo.should.equal(1);