1 |
|
2 | 'use strict';
|
3 |
|
4 | const madge = require('../lib/api');
|
5 | require('should');
|
6 |
|
7 | describe('CommonJS', () => {
|
8 | const dir = __dirname + '/cjs';
|
9 |
|
10 | it('finds recursive dependencies', (done) => {
|
11 | madge(dir + '/normal/a.js').then((res) => {
|
12 | res.obj().should.eql({
|
13 | 'a.js': ['sub/b.js'],
|
14 | 'd.js': [],
|
15 | 'sub/b.js': ['sub/c.js'],
|
16 | 'sub/c.js': ['d.js']
|
17 | });
|
18 | done();
|
19 | }).catch(done);
|
20 | });
|
21 |
|
22 | it('handles path outside directory', (done) => {
|
23 | madge(dir + '/normal/sub/c.js').then((res) => {
|
24 | res.obj().should.eql({
|
25 | '../d.js': [],
|
26 | 'c.js': ['../d.js']
|
27 | });
|
28 | done();
|
29 | }).catch(done);
|
30 | });
|
31 |
|
32 | it('finds circular dependencies', (done) => {
|
33 | madge(dir + '/circular/a.js').then((res) => {
|
34 | res.circular().should.eql([
|
35 | ['a.js', 'd.js']
|
36 | ]);
|
37 | done();
|
38 | }).catch(done);
|
39 | });
|
40 |
|
41 | it('handle extensions when finding circular dependencies', (done) => {
|
42 | madge(dir + '/circular/foo.js').then((res) => {
|
43 | res.circular().should.eql([]);
|
44 | done();
|
45 | }).catch(done);
|
46 | });
|
47 |
|
48 | it('excludes core modules by default', (done) => {
|
49 | madge(dir + '/core.js').then((res) => {
|
50 | res.obj().should.eql({
|
51 | 'core.js': []
|
52 | });
|
53 | done();
|
54 | }).catch(done);
|
55 | });
|
56 |
|
57 | it('excludes NPM modules by default', (done) => {
|
58 | madge(dir + '/npm.js').then((res) => {
|
59 | res.obj().should.eql({
|
60 | 'normal/d.js': [],
|
61 | 'npm.js': ['normal/d.js']
|
62 | });
|
63 | done();
|
64 | }).catch(done);
|
65 | });
|
66 |
|
67 | it('can include shallow NPM modules', (done) => {
|
68 | madge(dir + '/npm.js', {
|
69 | includeNpm: true
|
70 | }).then((res) => {
|
71 | res.obj().should.eql({
|
72 | 'normal/d.js': [],
|
73 | 'npm.js': ['node_modules/a.js', 'normal/d.js']
|
74 | });
|
75 | done();
|
76 | }).catch(done);
|
77 | });
|
78 | });
|