diff --git a/dev/tests/js/jasmine/tests/lib/mage/requirejs/mixins.test.js b/dev/tests/js/jasmine/tests/lib/mage/requirejs/mixins.test.js index 52374a24e8c68..c54473d4d757f 100644 --- a/dev/tests/js/jasmine/tests/lib/mage/requirejs/mixins.test.js +++ b/dev/tests/js/jasmine/tests/lib/mage/requirejs/mixins.test.js @@ -183,5 +183,31 @@ define(['rjsResolver', 'mixins'], function (resolver, mixins) { require([name], function () {}); }); + + it('applies mixins for modules that have no dependencies', function (done) { + var name = 'tests/assets/mixins/mixins-applied-no-dependencies', + mixinName = 'tests/assets/mixins/mixins-applied-no-dependencies-ext'; + + mixins.hasMixins.and.returnValue(true); + mixins.getMixins.and.returnValue([mixinName]); + + define(name, { + value: 'original' + }); + + define(mixinName, [], function () { + return function (module) { + module.value = 'changed'; + + return module; + }; + }); + + require([name], function (module) { + expect(module.value).toBe('changed'); + + done(); + }); + }); }); }); diff --git a/lib/web/mage/requirejs/mixins.js b/lib/web/mage/requirejs/mixins.js index 613605038f4b9..cb5ee8e462054 100644 --- a/lib/web/mage/requirejs/mixins.js +++ b/lib/web/mage/requirejs/mixins.js @@ -232,9 +232,12 @@ require([ * from it every time require call happens. */ defContext.defQueue.shift = function () { - var queueItem = Array.prototype.shift.call(this); + var queueItem = Array.prototype.shift.call(this), + lastDeps = queueItem && queueItem[1]; - queueItem[1] = processNames(queueItem[1], defContext); + if (Array.isArray(lastDeps)) { + queueItem[1] = processNames(queueItem[1], defContext); + } return queueItem; };