UNPKG

1.67 kBJavaScriptView Raw
1/* eslint-env mocha */
2'use strict';
3
4const madge = require('../lib/api');
5require('should');
6
7describe('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});