react / wstein / node_modules / browserify / node_modules / browser-resolve / test / modules-coffee.js
80529 viewsvar assert = require('assert');1var resolve = require('../');23var fixtures_dir = __dirname + '/fixtures-coffee/node_modules';45// no package.json, load index.js6test('index.js of module dir', function(done) {7var parent = {8paths: [ fixtures_dir ],9extensions: ['.js', '.coffee']10};11resolve('module-a', parent, function(err, path) {12assert.ifError(err);13assert.equal(path, require.resolve('./fixtures-coffee/node_modules/module-a/index.coffee'));14done();15});16});1718// package.json main field specifies other location19test('alternate main', function(done) {20var parent = {21paths: [ fixtures_dir ],22extensions: ['.js', '.coffee']23};24resolve('module-b', parent, function(err, path) {25assert.ifError(err);26assert.equal(path, require.resolve('./fixtures-coffee/node_modules/module-b/main.coffee'));27done();28}, {extensions: ['.js', '.coffee']});29});3031// package.json has 'browser' field which is a string32test('string browser field as main', function(done) {33var parent = {34paths: [ fixtures_dir ],35extensions: ['.js', '.coffee']36};37resolve('module-c', parent, function(err, path) {38assert.ifError(err);39assert.equal(path, require.resolve('./fixtures-coffee/node_modules/module-c/browser.coffee'));40done();41}, {extensions: ['.js', '.coffee']});42});4344// package.json has 'browser' field which is a string45test('string browser field as main - require subfile', function(done) {46var parent = {47filename: fixtures_dir + '/module-c/browser.js',48paths: [ fixtures_dir + '/module-c/node_modules' ],49extensions: ['.js', '.coffee']50};5152resolve('./bar', parent, function(err, path) {53assert.ifError(err);54assert.equal(path, require.resolve('./fixtures-coffee/node_modules/module-c/bar.coffee'));55done();56});57});5859// package.json has browser field as object60// one of the keys replaces the main file61// this would be done if the user needed to replace main and some other module62test('object browser field as main', function(done) {63var parent = {64paths: [ fixtures_dir ],65extensions: ['.js', '.coffee']66};67resolve('module-d', parent, function(err, path) {68assert.ifError(err);69assert.equal(path, require.resolve('./fixtures-coffee/node_modules/module-d/browser.coffee'));70done();71});72});7374// browser field in package.json maps ./foo.js -> ./browser.js75// when we resolve ./foo while in module-e, this mapping should take effect76// the result is that ./foo resolves to ./browser77test('object browser field replace file', function(done) {78var parent = {79filename: fixtures_dir + '/module-e/main.coffee',80extensions: ['.js', '.coffee']81};8283resolve('./foo', parent, function(err, path) {84assert.ifError(err);85assert.equal(path, require.resolve('./fixtures-coffee/node_modules/module-e/browser.coffee'));86done();87});88});8990// same as above, but without a paths field in parent91// should still checks paths on the filename of parent92test('object browser field replace file - no paths', function(done) {93var parent = {94filename: fixtures_dir + '/module-f/lib/main.coffee',95extensions: ['.js', '.coffee']96};9798resolve('./foo', parent, function(err, path) {99assert.ifError(err);100assert.equal(path, require.resolve('./fixtures-coffee/node_modules/module-f/lib/browser.coffee'));101done();102});103});104105test('replace module in browser field object', function(done) {106var parent = {107filename: fixtures_dir + '/module-g/index.js',108extensions: ['.js', '.coffee']109};110111resolve('foobar', parent, function(err, path) {112assert.ifError(err);113assert.equal(path, require.resolve('./fixtures-coffee/node_modules/module-g/foobar-browser.coffee'));114done();115});116});117118119