| var test = require('tape'); |
| var resolve = require('../'); |
| |
| test('mock', function (t) { |
| t.plan(6); |
| |
| var files = { |
| '/foo/bar/baz.js' : 'beep' |
| }; |
| |
| function opts (basedir) { |
| return { |
| basedir : basedir, |
| isFile : function (file, cb) { |
| cb(null, files.hasOwnProperty(file)); |
| }, |
| readFile : function (file, cb) { |
| cb(null, files[file]); |
| } |
| } |
| } |
| |
| resolve('./baz', opts('/foo/bar'), function (err, res, pkg) { |
| if (err) t.fail(err); |
| t.equal(res, '/foo/bar/baz.js'); |
| t.equal(pkg, undefined); |
| }); |
| |
| resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) { |
| if (err) t.fail(err); |
| t.equal(res, '/foo/bar/baz.js'); |
| t.equal(pkg, undefined); |
| }); |
| |
| resolve('baz', opts('/foo/bar'), function (err, res) { |
| t.equal(err.message, "Cannot find module 'baz' from '/foo/bar'"); |
| }); |
| |
| resolve('../baz', opts('/foo/bar'), function (err, res) { |
| t.equal(err.message, "Cannot find module '../baz' from '/foo/bar'"); |
| }); |
| }); |
| |
| test('mock from package', function (t) { |
| t.plan(6); |
| |
| var files = { |
| '/foo/bar/baz.js' : 'beep' |
| }; |
| |
| function opts (basedir) { |
| return { |
| basedir : basedir, |
| package : { main: 'bar' }, |
| isFile : function (file, cb) { |
| cb(null, files.hasOwnProperty(file)); |
| }, |
| readFile : function (file, cb) { |
| cb(null, files[file]); |
| } |
| } |
| } |
| |
| resolve('./baz', opts('/foo/bar'), function (err, res, pkg) { |
| if (err) t.fail(err); |
| t.equal(res, '/foo/bar/baz.js'); |
| t.equal(pkg.main, 'bar'); |
| }); |
| |
| resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) { |
| if (err) t.fail(err); |
| t.equal(res, '/foo/bar/baz.js'); |
| t.equal(pkg.main, 'bar'); |
| }); |
| |
| resolve('baz', opts('/foo/bar'), function (err, res) { |
| t.equal(err.message, "Cannot find module 'baz' from '/foo/bar'"); |
| }); |
| |
| resolve('../baz', opts('/foo/bar'), function (err, res) { |
| t.equal(err.message, "Cannot find module '../baz' from '/foo/bar'"); |
| }); |
| }); |
| |
| test('mock package', function (t) { |
| t.plan(2); |
| |
| var files = { |
| '/foo/node_modules/bar/baz.js' : 'beep', |
| '/foo/node_modules/bar/package.json' : JSON.stringify({ |
| main : './baz.js' |
| }) |
| }; |
| |
| function opts (basedir) { |
| return { |
| basedir : basedir, |
| isFile : function (file, cb) { |
| cb(null, files.hasOwnProperty(file)); |
| }, |
| readFile : function (file, cb) { |
| cb(null, files[file]); |
| } |
| } |
| } |
| |
| resolve('bar', opts('/foo'), function (err, res, pkg) { |
| if (err) t.fail(err); |
| t.equal(res, '/foo/node_modules/bar/baz.js'); |
| t.equal(pkg.main, './baz.js'); |
| }); |
| }); |
| |
| test('mock package from package', function (t) { |
| t.plan(2); |
| |
| var files = { |
| '/foo/node_modules/bar/baz.js' : 'beep', |
| '/foo/node_modules/bar/package.json' : JSON.stringify({ |
| main : './baz.js' |
| }) |
| }; |
| |
| function opts (basedir) { |
| return { |
| basedir : basedir, |
| package : { main: 'bar' }, |
| isFile : function (file, cb) { |
| cb(null, files.hasOwnProperty(file)); |
| }, |
| readFile : function (file, cb) { |
| cb(null, files[file]); |
| } |
| } |
| } |
| |
| resolve('bar', opts('/foo'), function (err, res, pkg) { |
| if (err) t.fail(err); |
| t.equal(res, '/foo/node_modules/bar/baz.js'); |
| t.equal(pkg.main, './baz.js'); |
| }); |
| }); |