From d2cd52218a67543d1c8a28c717de73507507becc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jannis=20Mo=C3=9Fhammer?= Date: Thu, 13 Jun 2013 17:29:38 +0200 Subject: [PATCH] Add mockup for requirejs Tests can now call require('requiremock') to bootstrap an alternative requirejs implementation and use the resulting object for defining dependencies and mocks refs #4308 --- test/js/runtests | 3 +- test/js/testlib/requiremock.js | 124 +++++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 test/js/testlib/requiremock.js diff --git a/test/js/runtests b/test/js/runtests index 27c810432..2d3b759a3 100755 --- a/test/js/runtests +++ b/test/js/runtests @@ -84,7 +84,8 @@ def main(): return 2 os.environ['NODE_PATH'] = os.environ.get('NODE_PATH', '') + \ ':/usr/local/lib/node_modules' \ - ':/usr/lib/node_modules' + ':/usr/local/share/npm/lib/node_modules' \ + ':/usr/lib/node_modules:./testlib' # Commandline preparation command_options, more_command_options = [], None diff --git a/test/js/testlib/requiremock.js b/test/js/testlib/requiremock.js new file mode 100644 index 000000000..5bda50d18 --- /dev/null +++ b/test/js/testlib/requiremock.js @@ -0,0 +1,124 @@ +/** +* {{LICENSE_HEADER}} +* {{LICENSE_HEADER}} +**/ + +/** +* This node module acts as a mock for requirejs and allows you to +* define your own dependencies in your tests. It also removes the +* asynchronous character of dependency loading, so you don't need +* to handle everthing in the callbacks. +* +* Per default it resolves the 'logging' dependency by routing it +* to console. +* +**/ +var registeredDependencies = {}; + +/** +* Mock for the requirejs(dependencyList, callback) function, loads +* all dependencies that have been registered under the given names +* in dependencies and calls fn with them as the parameter +* +**/ +var requireJsMock = function(dependencies, fn) { + var fnArgs = []; + for (var i=0;iobject map of dependencies +* for lookup with requirejs()/define() +**/ +function registerDependencies(obj) { + for(var name in obj) { + registeredDependencies[name] = obj[name]; + } +} + +/** +* The API for this module +**/ +module.exports = { + purgeDependencies: purgeDependencies, + registerDependencies: registerDependencies, + getDefine: function(name) { + if (typeof arg === "undefined") { + return registeredDependencies.__define__; + } else { + return registeredDependencies[name]; + } + } +};