1*d8009c4bSEvan Baconimport { vol } from 'memfs'; 2*d8009c4bSEvan Bacon 3*d8009c4bSEvan Baconimport { loadTsConfigPathsAsync } from '../loadTsConfigPaths'; 4*d8009c4bSEvan Bacon 5*d8009c4bSEvan Baconjest.mock('../evaluateTsConfig', () => ({ 6*d8009c4bSEvan Bacon evaluateTsConfig: jest.fn((ts, filepath) => { 7*d8009c4bSEvan Bacon return (require('@expo/json-file') as typeof import('@expo/json-file')).default.read(filepath, { 8*d8009c4bSEvan Bacon json5: true, 9*d8009c4bSEvan Bacon }); 10*d8009c4bSEvan Bacon }), 11*d8009c4bSEvan Bacon importTypeScriptFromProjectOptionally: jest.fn(() => ({})), 12*d8009c4bSEvan Bacon})); 13*d8009c4bSEvan Bacon 14*d8009c4bSEvan Bacondescribe(loadTsConfigPathsAsync, () => { 15*d8009c4bSEvan Bacon beforeEach(() => { 16*d8009c4bSEvan Bacon vol.reset(); 17*d8009c4bSEvan Bacon }); 18*d8009c4bSEvan Bacon it(`returns null if tsconfig doesn't exist`, async () => { 19*d8009c4bSEvan Bacon vol.fromJSON({}, '/'); 20*d8009c4bSEvan Bacon expect(await loadTsConfigPathsAsync('/')).toBeNull(); 21*d8009c4bSEvan Bacon }); 22*d8009c4bSEvan Bacon it(`returns just baseUrl`, async () => { 23*d8009c4bSEvan Bacon vol.fromJSON( 24*d8009c4bSEvan Bacon { 25*d8009c4bSEvan Bacon 'jsconfig.json': '{}', 26*d8009c4bSEvan Bacon }, 27*d8009c4bSEvan Bacon '/' 28*d8009c4bSEvan Bacon ); 29*d8009c4bSEvan Bacon expect(await loadTsConfigPathsAsync('/')).toEqual({ baseUrl: '/', paths: undefined }); 30*d8009c4bSEvan Bacon }); 31*d8009c4bSEvan Bacon it(`returns jsconfig paths`, async () => { 32*d8009c4bSEvan Bacon vol.fromJSON( 33*d8009c4bSEvan Bacon { 34*d8009c4bSEvan Bacon 'jsconfig.json': JSON.stringify({ 35*d8009c4bSEvan Bacon compilerOptions: { 36*d8009c4bSEvan Bacon baseUrl: 'src', 37*d8009c4bSEvan Bacon paths: { 38*d8009c4bSEvan Bacon '@foo/*': ['foo/*'], 39*d8009c4bSEvan Bacon }, 40*d8009c4bSEvan Bacon }, 41*d8009c4bSEvan Bacon }), 42*d8009c4bSEvan Bacon }, 43*d8009c4bSEvan Bacon '/' 44*d8009c4bSEvan Bacon ); 45*d8009c4bSEvan Bacon expect(await loadTsConfigPathsAsync('/')).toEqual({ 46*d8009c4bSEvan Bacon baseUrl: '/src', 47*d8009c4bSEvan Bacon paths: { '@foo/*': ['foo/*'] }, 48*d8009c4bSEvan Bacon }); 49*d8009c4bSEvan Bacon }); 50*d8009c4bSEvan Bacon it(`returns tsconfig before jsconfig`, async () => { 51*d8009c4bSEvan Bacon vol.fromJSON( 52*d8009c4bSEvan Bacon { 53*d8009c4bSEvan Bacon 'tsconfig.json': JSON.stringify({ 54*d8009c4bSEvan Bacon compilerOptions: { 55*d8009c4bSEvan Bacon baseUrl: 'src', 56*d8009c4bSEvan Bacon paths: { 57*d8009c4bSEvan Bacon '@foo/*': ['foo/*'], 58*d8009c4bSEvan Bacon }, 59*d8009c4bSEvan Bacon }, 60*d8009c4bSEvan Bacon }), 61*d8009c4bSEvan Bacon 'jsconfig.json': JSON.stringify({}), 62*d8009c4bSEvan Bacon }, 63*d8009c4bSEvan Bacon '/' 64*d8009c4bSEvan Bacon ); 65*d8009c4bSEvan Bacon expect(await loadTsConfigPathsAsync('/')).toEqual({ 66*d8009c4bSEvan Bacon baseUrl: '/src', 67*d8009c4bSEvan Bacon paths: { '@foo/*': ['foo/*'] }, 68*d8009c4bSEvan Bacon }); 69*d8009c4bSEvan Bacon }); 70*d8009c4bSEvan Bacon}); 71