• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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