1*0b50ef93SCedric van Puttenimport { AndroidConfig, IOSConfig } from '@expo/config-plugins'; 2*0b50ef93SCedric van Puttenimport { getInfoPlistPathFromPbxproj } from '@expo/config-plugins/build/ios/utils/getInfoPlistPath'; 3*0b50ef93SCedric van Puttenimport { vol } from 'memfs'; 4*0b50ef93SCedric van Puttenimport path from 'path'; 5*0b50ef93SCedric van Putten 6*0b50ef93SCedric van Puttenimport { getSchemesForAndroidAsync, getSchemesForIosAsync } from '../scheme'; 7*0b50ef93SCedric van Putten 8*0b50ef93SCedric van Puttenjest.mock('fs'); 9*0b50ef93SCedric van Puttenjest.mock('@expo/config-plugins'); 10*0b50ef93SCedric van Puttenjest.mock('@expo/config-plugins/build/ios/utils/getInfoPlistPath'); 11*0b50ef93SCedric van Putten 12*0b50ef93SCedric van Putten// TODO: replace with `jest.mocked`, when updating Jest 13*0b50ef93SCedric van Puttenconst asMock = (fn: any): jest.Mock => fn; 14*0b50ef93SCedric van Putten 15*0b50ef93SCedric van Puttendescribe(getSchemesForAndroidAsync, () => { 16*0b50ef93SCedric van Putten it('resolves longest scheme without known expo schemes', async () => { 17*0b50ef93SCedric van Putten asMock(AndroidConfig.Scheme.getSchemesFromManifest).mockResolvedValue([ 18*0b50ef93SCedric van Putten 'com.expo.test', 19*0b50ef93SCedric van Putten 'com.expo.longertest', 20*0b50ef93SCedric van Putten 'com.expo.longesttest', 21*0b50ef93SCedric van Putten ]); 22*0b50ef93SCedric van Putten 23*0b50ef93SCedric van Putten await expect(getSchemesForAndroidAsync('/fake-project')).resolves.toEqual([ 24*0b50ef93SCedric van Putten 'com.expo.longesttest', 25*0b50ef93SCedric van Putten 'com.expo.longertest', 26*0b50ef93SCedric van Putten 'com.expo.test', 27*0b50ef93SCedric van Putten ]); 28*0b50ef93SCedric van Putten }); 29*0b50ef93SCedric van Putten 30*0b50ef93SCedric van Putten it('resolves known expo schemes before longest schemes', async () => { 31*0b50ef93SCedric van Putten asMock(AndroidConfig.Scheme.getSchemesFromManifest).mockResolvedValue([ 32*0b50ef93SCedric van Putten 'com.expo.longesttest', 33*0b50ef93SCedric van Putten 'exp+com.expo.test', 34*0b50ef93SCedric van Putten ]); 35*0b50ef93SCedric van Putten 36*0b50ef93SCedric van Putten await expect(getSchemesForAndroidAsync('/fake-project')).resolves.toEqual([ 37*0b50ef93SCedric van Putten 'exp+com.expo.test', 38*0b50ef93SCedric van Putten ]); 39*0b50ef93SCedric van Putten }); 40*0b50ef93SCedric van Putten}); 41*0b50ef93SCedric van Putten 42*0b50ef93SCedric van Puttendescribe(getSchemesForIosAsync, () => { 43*0b50ef93SCedric van Putten beforeAll(() => { 44*0b50ef93SCedric van Putten const fakePlist = ` 45*0b50ef93SCedric van Putten <?xml version="1.0" encoding="UTF-8"?> 46*0b50ef93SCedric van Putten <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 47*0b50ef93SCedric van Putten <plist version="1.0"> 48*0b50ef93SCedric van Putten <dict> 49*0b50ef93SCedric van Putten <key>fake</key> 50*0b50ef93SCedric van Putten <string>plist</string> 51*0b50ef93SCedric van Putten </dic> 52*0b50ef93SCedric van Putten </plist> 53*0b50ef93SCedric van Putten `; 54*0b50ef93SCedric van Putten 55*0b50ef93SCedric van Putten vol.fromJSON({ 56*0b50ef93SCedric van Putten [path.join('fake-project', 'ios', 'fake-pbxproject')]: fakePlist, 57*0b50ef93SCedric van Putten }); 58*0b50ef93SCedric van Putten }); 59*0b50ef93SCedric van Putten 60*0b50ef93SCedric van Putten afterAll(() => { 61*0b50ef93SCedric van Putten vol.reset(); 62*0b50ef93SCedric van Putten }); 63*0b50ef93SCedric van Putten 64*0b50ef93SCedric van Putten it('resolves longest scheme without known expo schemes', async () => { 65*0b50ef93SCedric van Putten asMock(getInfoPlistPathFromPbxproj).mockReturnValue('fake-pbxproject'); 66*0b50ef93SCedric van Putten asMock(IOSConfig.Scheme.getSchemesFromPlist).mockReturnValue([ 67*0b50ef93SCedric van Putten 'com.expo.test', 68*0b50ef93SCedric van Putten 'com.expo.longertest', 69*0b50ef93SCedric van Putten 'com.expo.longesttest', 70*0b50ef93SCedric van Putten ]); 71*0b50ef93SCedric van Putten 72*0b50ef93SCedric van Putten await expect(getSchemesForIosAsync('fake-project')).resolves.toEqual([ 73*0b50ef93SCedric van Putten 'com.expo.longesttest', 74*0b50ef93SCedric van Putten 'com.expo.longertest', 75*0b50ef93SCedric van Putten 'com.expo.test', 76*0b50ef93SCedric van Putten ]); 77*0b50ef93SCedric van Putten }); 78*0b50ef93SCedric van Putten 79*0b50ef93SCedric van Putten it('resolves known expo schemes before longest schemes', async () => { 80*0b50ef93SCedric van Putten asMock(getInfoPlistPathFromPbxproj).mockReturnValue('fake-pbxproject'); 81*0b50ef93SCedric van Putten asMock(IOSConfig.Scheme.getSchemesFromPlist).mockReturnValue([ 82*0b50ef93SCedric van Putten 'com.expo.longesttest', 83*0b50ef93SCedric van Putten 'exp+com.expo.test', 84*0b50ef93SCedric van Putten ]); 85*0b50ef93SCedric van Putten 86*0b50ef93SCedric van Putten await expect(getSchemesForIosAsync('fake-project')).resolves.toEqual(['exp+com.expo.test']); 87*0b50ef93SCedric van Putten }); 88*0b50ef93SCedric van Putten}); 89