1var path = require('path') 2var chai = require('chai') 3var sinon = require('sinon') 4var sinonChai = require('sinon-chai') 5var expect = chai.expect 6chai.use(sinonChai) 7 8var md5 = require('md5') 9var parseAndReplaceRequire = require('../lib/require-parse').parseAndReplaceRequire 10 11 12describe('parse and replace require 3rd party js', function () { 13 it('implicit node_modules', function () { 14 var code = 'var a = require("md5");' 15 var absolutePath = path.join(__dirname, '../node_modules/md5/md5.js') 16 var md5Path = md5(absolutePath) 17 var expected = { 18 code: 'var a = browserifyRequire("' + md5Path + '");', 19 requires: {}, 20 log: [] 21 } 22 expected.requires[md5Path] = absolutePath 23 expect(parseAndReplaceRequire(code)).eql(expected) 24 }) 25 26 it('explicit node_modules', function () { 27 var code = 'var a = require("./node_modules/md5");' 28 var absolutePath = path.join(__dirname, '../node_modules/md5/md5.js') 29 var md5Path = md5(absolutePath) 30 var expected = { 31 code: 'var a = browserifyRequire("' + md5Path + '");', 32 requires: {}, 33 log: [] 34 } 35 expected.requires[md5Path] = absolutePath 36 expect(parseAndReplaceRequire(code)).eql(expected) 37 }) 38 39 it('current directory with no extname', function () { 40 var code = 'var a = require("./lib/fix");' 41 var absolutePath = path.join(__dirname, '../lib/fix.js') 42 var md5Path = md5(absolutePath) 43 var expected = { 44 code: 'var a = browserifyRequire("' + md5Path + '");', 45 requires: {}, 46 log: [] 47 } 48 expected.requires[md5Path] = absolutePath 49 expect(parseAndReplaceRequire(code)).eql(expected) 50 }) 51 52 it('current directory with extname', function () { 53 var code = 'var a = require("./lib/fix.js");' 54 var absolutePath = path.join(__dirname, '../lib/fix.js') 55 var md5Path = md5(absolutePath) 56 var expected = { 57 code: 'var a = browserifyRequire("' + md5Path + '");', 58 requires: {}, 59 log: [] 60 } 61 expected.requires[md5Path] = absolutePath 62 expect(parseAndReplaceRequire(code)).eql(expected) 63 }) 64 65 it('parent directory with no extname', function () { 66 var code = 'var a = require("./test/fix");' 67 var absolutePath = path.join(__dirname, '../test/fix.js') 68 var md5Path = md5(absolutePath) 69 var expected = { 70 code: 'var a = browserifyRequire("' + md5Path + '");', 71 requires: {}, 72 log: [] 73 } 74 expected.requires[md5Path] = absolutePath 75 expect(parseAndReplaceRequire(code)).eql(expected) 76 }) 77 78 it('parent directory with extname', function () { 79 var code = 'var a = require("./test/fix.js");' 80 var absolutePath = path.join(__dirname, '../test/fix.js') 81 var md5Path = md5(absolutePath) 82 var expected = { 83 code: 'var a = browserifyRequire("' + md5Path + '");', 84 requires: {}, 85 log: [] 86 } 87 expected.requires[md5Path] = absolutePath 88 expect(parseAndReplaceRequire(code)).eql(expected) 89 }) 90 91 it('require @weex-module', function () { 92 var code = 'var a = require("@weex-module/xxx");' 93 var expected = { 94 code: 'var a = require("@weex-module/xxx");', 95 requires: {}, 96 log: [] 97 } 98 expect(parseAndReplaceRequire(code)).eql(expected) 99 }) 100 101 it('require @weex-component', function () { 102 var code = 'var a = require("@weex-component/xxx");' 103 var expected = { 104 code: 'var a = require("@weex-component/xxx");', 105 requires: {}, 106 log: [] 107 } 108 expect(parseAndReplaceRequire(code)).eql(expected) 109 }) 110 111 it('multiple requires', function () { 112 var code = 'var a = require("md5"); var b = require("test/fix"); var c = require("@weex-component/xxx");' 113 var absolutePathA = path.join(__dirname, '../node_modules/md5/md5.js') 114 var md5PathA = md5(absolutePathA) 115 var absolutePathB = path.join(__dirname, '../test/fix.js') 116 var md5PathB = md5(absolutePathB) 117 var expected = { 118 code: 'var a = browserifyRequire("' + md5PathA + '"); var b = browserifyRequire("' + md5PathB + '"); var c = require("@weex-component/xxx");', 119 requires: {}, 120 log: [] 121 } 122 expected.requires[md5PathA] = absolutePathA 123 expected.requires[md5PathB] = absolutePathB 124 expect(parseAndReplaceRequire(code)).eql(expected) 125 }) 126 127 it('cannot find required module', function () { 128 var code = 'var a = require("underscore")' 129 var expected = { 130 code: 'var a = require("underscore")', 131 requires: {}, 132 log: [{reason: 'ERROR: Cannot find required module "underscore"'}] 133 } 134 expect(parseAndReplaceRequire(code)).eql(expected) 135 }) 136}) 137