UNPKG

1.43 kBJavaScriptView Raw
1/* eslint-env mocha */
2'use strict';
3
4const madge = require('../lib/api');
5require('should');
6
7describe('TypeScript', () => {
8 const dir = __dirname + '/typescript';
9
10 it('extracts module dependencies', (done) => {
11 madge(dir + '/import.ts').then((res) => {
12 res.obj().should.eql({
13 'import.ts': ['require-x.tsx', 'require.ts'],
14 'require.ts': ['export.ts'],
15 'require-x.tsx': ['export-x.tsx', 'export.ts'],
16 'export.ts': [],
17 'export-x.tsx': []
18 });
19 done();
20 }).catch(done);
21 });
22
23 it('reads paths from a custom tsConfig', (done) => {
24 const tsConfig = {
25 compilerOptions: {
26 baseUrl: dir,
27 moduleResolution: 'node',
28 paths: {
29 '@shortcut/*': ['custom-paths/subfolder/*'],
30 '@shortcut2/*': ['custom-paths/subfolder2/*']
31 }
32 }
33 };
34 madge(dir + '/custom-paths/import.ts', {tsConfig: tsConfig}).then((res) => {
35 res.obj().should.eql({
36 'import.ts': ['subfolder/index.ts', 'subfolder/require.tsx'],
37 'subfolder/index.ts': [],
38 'subfolder/require.tsx': ['subfolder2/export.ts'],
39 'subfolder2/export.ts': []
40 });
41 done();
42 }).catch(done);
43 });
44
45 it('supports CJS modules when using mixedImports option', (done) => {
46 madge(dir + '/mixed.ts', {detectiveOptions: {ts: {mixedImports: true}}}).then((res) => {
47 res.obj().should.eql({
48 'export-x.tsx': [],
49 'export.ts': [],
50 'mixed.ts': ['export-x.tsx', 'export.ts']
51 });
52 done();
53 }).catch(done);
54 });
55});