1d8009c4bSEvan Baconimport { resolveWithTsConfigPaths } from '../resolveWithTsConfigPaths';
2d8009c4bSEvan Bacon
3d8009c4bSEvan Bacondescribe(resolveWithTsConfigPaths, () => {
4d8009c4bSEvan Bacon  it('resolves a simple alias', () => {
5*8a424bebSJames Ide    const resolver = jest.fn(() => ({}) as any);
6d8009c4bSEvan Bacon    expect(
7d8009c4bSEvan Bacon      resolveWithTsConfigPaths(
8d8009c4bSEvan Bacon        {
9d8009c4bSEvan Bacon          paths: {
10d8009c4bSEvan Bacon            '@foo/*': ['foo/*'],
11d8009c4bSEvan Bacon          },
12d8009c4bSEvan Bacon          baseUrl: '.',
13d8009c4bSEvan Bacon        },
14d8009c4bSEvan Bacon        {
15d8009c4bSEvan Bacon          moduleName: '@foo/bar',
16d8009c4bSEvan Bacon          originModulePath: './foo/bar',
17d8009c4bSEvan Bacon        },
18d8009c4bSEvan Bacon        resolver
19d8009c4bSEvan Bacon      )
20d8009c4bSEvan Bacon    ).not.toEqual(null);
21d8009c4bSEvan Bacon
22d8009c4bSEvan Bacon    expect(resolver).toHaveBeenCalledWith('foo/bar');
23d8009c4bSEvan Bacon  });
24d8009c4bSEvan Bacon  it('resolves an alias with baseUrl', () => {
25*8a424bebSJames Ide    const resolver = jest.fn(() => ({}) as any);
26d8009c4bSEvan Bacon    expect(
27d8009c4bSEvan Bacon      resolveWithTsConfigPaths(
28d8009c4bSEvan Bacon        {
29d8009c4bSEvan Bacon          paths: {
30d8009c4bSEvan Bacon            '@foo/*': ['foo/*'],
31d8009c4bSEvan Bacon          },
32d8009c4bSEvan Bacon          baseUrl: './src',
33d8009c4bSEvan Bacon        },
34d8009c4bSEvan Bacon        {
35d8009c4bSEvan Bacon          moduleName: '@foo/bar',
36d8009c4bSEvan Bacon          originModulePath: './foo/bar',
37d8009c4bSEvan Bacon        },
38d8009c4bSEvan Bacon        resolver
39d8009c4bSEvan Bacon      )
40d8009c4bSEvan Bacon    ).not.toEqual(null);
41d8009c4bSEvan Bacon
42d8009c4bSEvan Bacon    expect(resolver).toHaveBeenCalledWith('src/foo/bar');
43d8009c4bSEvan Bacon  });
44d8009c4bSEvan Bacon  it(`skips resolving if the origin module is inside the node_modules directory`, () => {
45*8a424bebSJames Ide    const resolver = jest.fn(() => ({}) as any);
46d8009c4bSEvan Bacon    expect(
47d8009c4bSEvan Bacon      resolveWithTsConfigPaths(
48d8009c4bSEvan Bacon        {
49d8009c4bSEvan Bacon          paths: {
50d8009c4bSEvan Bacon            '@foo/*': ['foo/*'],
51d8009c4bSEvan Bacon          },
52d8009c4bSEvan Bacon          baseUrl: '.',
53d8009c4bSEvan Bacon        },
54d8009c4bSEvan Bacon        {
55d8009c4bSEvan Bacon          moduleName: '@foo/bar',
56d8009c4bSEvan Bacon          originModulePath: './node_modules/foo/bar',
57d8009c4bSEvan Bacon        },
58d8009c4bSEvan Bacon        resolver
59d8009c4bSEvan Bacon      )
60d8009c4bSEvan Bacon    ).toEqual(null);
61d8009c4bSEvan Bacon
62d8009c4bSEvan Bacon    expect(resolver).not.toHaveBeenCalled();
63d8009c4bSEvan Bacon  });
64d8009c4bSEvan Bacon  it(`skips resolving if the module name is absolute or relative`, () => {
65d8009c4bSEvan Bacon    ['/foo/bar', './foo/bar'].forEach((moduleName) => {
66*8a424bebSJames Ide      const resolver = jest.fn(() => ({}) as any);
67d8009c4bSEvan Bacon      expect(
68d8009c4bSEvan Bacon        resolveWithTsConfigPaths(
69d8009c4bSEvan Bacon          {
70d8009c4bSEvan Bacon            paths: {
71d8009c4bSEvan Bacon              '@foo/*': ['foo/*'],
72d8009c4bSEvan Bacon            },
73d8009c4bSEvan Bacon            baseUrl: '.',
74d8009c4bSEvan Bacon          },
75d8009c4bSEvan Bacon          {
76d8009c4bSEvan Bacon            moduleName,
77d8009c4bSEvan Bacon            originModulePath: '/foo/bar',
78d8009c4bSEvan Bacon          },
79d8009c4bSEvan Bacon          resolver
80d8009c4bSEvan Bacon        )
81d8009c4bSEvan Bacon      ).toEqual(null);
82d8009c4bSEvan Bacon
83d8009c4bSEvan Bacon      expect(resolver).not.toHaveBeenCalled();
84d8009c4bSEvan Bacon    });
85d8009c4bSEvan Bacon  });
86d8009c4bSEvan Bacon});
87