1*8d307f52SEvan Baconimport { getConfig } from '@expo/config'; 2*8d307f52SEvan Baconimport { vol } from 'memfs'; 3*8d307f52SEvan Bacon 4*8d307f52SEvan Baconimport { ensureConfigExistsAsync } from '../ensureConfigAsync'; 5*8d307f52SEvan Bacon 6*8d307f52SEvan Bacondescribe(ensureConfigExistsAsync, () => { 7*8d307f52SEvan Bacon const projectRoot = '/alpha'; 8*8d307f52SEvan Bacon const projectRootBeta = '/beta'; 9*8d307f52SEvan Bacon 10*8d307f52SEvan Bacon beforeAll(() => { 11*8d307f52SEvan Bacon const expoPackageJson = JSON.stringify({ 12*8d307f52SEvan Bacon name: 'expo', 13*8d307f52SEvan Bacon version: '40.0.0', 14*8d307f52SEvan Bacon }); 15*8d307f52SEvan Bacon 16*8d307f52SEvan Bacon vol.fromJSON( 17*8d307f52SEvan Bacon { 18*8d307f52SEvan Bacon // No app.json, the config should be automatically created using the Expo SDK version in the installed package. 19*8d307f52SEvan Bacon 'index.js': '', 20*8d307f52SEvan Bacon 'src/index.js': '', 21*8d307f52SEvan Bacon 'package.json': JSON.stringify({ name: 'my-app' }), 22*8d307f52SEvan Bacon 'node_modules/expo/package.json': expoPackageJson, 23*8d307f52SEvan Bacon }, 24*8d307f52SEvan Bacon projectRoot 25*8d307f52SEvan Bacon ); 26*8d307f52SEvan Bacon vol.fromJSON( 27*8d307f52SEvan Bacon { 28*8d307f52SEvan Bacon 'App.js': '', 29*8d307f52SEvan Bacon }, 30*8d307f52SEvan Bacon projectRootBeta 31*8d307f52SEvan Bacon ); 32*8d307f52SEvan Bacon }); 33*8d307f52SEvan Bacon 34*8d307f52SEvan Bacon afterAll(() => { 35*8d307f52SEvan Bacon vol.reset(); 36*8d307f52SEvan Bacon }); 37*8d307f52SEvan Bacon 38*8d307f52SEvan Bacon it(`automatically writes an Expo config when one is missing`, async () => { 39*8d307f52SEvan Bacon await ensureConfigExistsAsync(projectRoot); 40*8d307f52SEvan Bacon const config = getConfig(projectRoot); 41*8d307f52SEvan Bacon 42*8d307f52SEvan Bacon // Writes a static config 43*8d307f52SEvan Bacon expect(config.staticConfigPath).toBe('/alpha/app.json'); 44*8d307f52SEvan Bacon expect(config.dynamicConfigPath).toBe(null); 45*8d307f52SEvan Bacon 46*8d307f52SEvan Bacon expect(config.exp.sdkVersion).toBe('40.0.0'); 47*8d307f52SEvan Bacon expect(config.exp.name).toBe('my-app'); 48*8d307f52SEvan Bacon // Ensure the internal object isn't written 49*8d307f52SEvan Bacon expect(config.rootConfig._internal).not.toBeDefined(); 50*8d307f52SEvan Bacon }); 51*8d307f52SEvan Bacon}); 52