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