1 var path = require('path');
2 var test = require('tape');
3 var resolve = require('../');
5 test('mock', function (t) {
9 files[path.resolve('/foo/bar/baz.js')] = 'beep';
11 function opts(basedir) {
13 basedir: path.resolve(basedir),
14 isFile: function (file, cb) {
15 cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
17 readFile: function (file, cb) {
18 cb(null, files[path.resolve(file)]);
23 resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
24 if (err) return t.fail(err);
25 t.equal(res, path.resolve('/foo/bar/baz.js'));
26 t.equal(pkg, undefined);
29 resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
30 if (err) return t.fail(err);
31 t.equal(res, path.resolve('/foo/bar/baz.js'));
32 t.equal(pkg, undefined);
35 resolve('baz', opts('/foo/bar'), function (err, res) {
36 t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'");
37 t.equal(err.code, 'MODULE_NOT_FOUND');
40 resolve('../baz', opts('/foo/bar'), function (err, res) {
41 t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'");
42 t.equal(err.code, 'MODULE_NOT_FOUND');
46 test('mock from package', function (t) {
50 files[path.resolve('/foo/bar/baz.js')] = 'beep';
52 function opts(basedir) {
54 basedir: path.resolve(basedir),
55 isFile: function (file, cb) {
56 cb(null, Object.prototype.hasOwnProperty.call(files, file));
58 'package': { main: 'bar' },
59 readFile: function (file, cb) {
60 cb(null, files[file]);
65 resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
66 if (err) return t.fail(err);
67 t.equal(res, path.resolve('/foo/bar/baz.js'));
68 t.equal(pkg && pkg.main, 'bar');
71 resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
72 if (err) return t.fail(err);
73 t.equal(res, path.resolve('/foo/bar/baz.js'));
74 t.equal(pkg && pkg.main, 'bar');
77 resolve('baz', opts('/foo/bar'), function (err, res) {
78 t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'");
79 t.equal(err.code, 'MODULE_NOT_FOUND');
82 resolve('../baz', opts('/foo/bar'), function (err, res) {
83 t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'");
84 t.equal(err.code, 'MODULE_NOT_FOUND');
88 test('mock package', function (t) {
92 files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
93 files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
97 function opts(basedir) {
99 basedir: path.resolve(basedir),
100 isFile: function (file, cb) {
101 cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
103 readFile: function (file, cb) {
104 cb(null, files[path.resolve(file)]);
109 resolve('bar', opts('/foo'), function (err, res, pkg) {
110 if (err) return t.fail(err);
111 t.equal(res, path.resolve('/foo/node_modules/bar/baz.js'));
112 t.equal(pkg && pkg.main, './baz.js');
116 test('mock package from package', function (t) {
120 files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
121 files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
125 function opts(basedir) {
127 basedir: path.resolve(basedir),
128 isFile: function (file, cb) {
129 cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
131 'package': { main: 'bar' },
132 readFile: function (file, cb) {
133 cb(null, files[path.resolve(file)]);
138 resolve('bar', opts('/foo'), function (err, res, pkg) {
139 if (err) return t.fail(err);
140 t.equal(res, path.resolve('/foo/node_modules/bar/baz.js'));
141 t.equal(pkg && pkg.main, './baz.js');