redux-pager-test
Version:
Test framework for redux-pager and related components. Enables redux-pager to not carry heavyweight dependencies.
37 lines (31 loc) • 1.27 kB
JavaScript
require('jsdom')
const fs = require('fs')
const ReactTools = require('react-tools')
const origJs = require.extensions['.js']
// A module that exports a single, stubbed-out React Component.
const reactStub = 'module.exports = require("react").createClass({render:function(){return null;}});'
// Should this file be stubbed out for testing?
function shouldStub(filename) {
if (!global.reactModulesToStub) return false
// Check if the file name ends with any stub path.
var stubs = global.reactModulesToStub
for (var i = 0; i < stubs.length; i++) {
if (filename.substr(-stubs[i].length) == stubs[i]) return true
}
return false
}
// Transform a file via JSX/Harmony or stubbing.
function transform(filename) {
if (shouldStub(filename)) return reactStub
else {
var content = fs.readFileSync(filename, 'utf8')
return ReactTools.transform(content, {harmony: true})
}
}
// Install the compiler.
require.extensions['.js'] = function(module, filename) {
// optimization: code in a distribution should never go through JSX compiler.
if (filename.indexOf('node_modules/') >= 0)
return (origJs || require.extensions['.js'])(module, filename)
return module._compile(transform(filename), filename)
}