1*082815dcSEvan Baconimport { ExpoConfig } from '@expo/config'; 2*082815dcSEvan Bacon 3*082815dcSEvan Baconimport { ConfigPlugin, ExportedConfigWithProps, Mod } from '../../Plugin.types'; 4*082815dcSEvan Bacon 5*082815dcSEvan Bacon// Usage: add the following mock to the mods you are using: 6*082815dcSEvan Bacon// jest.mock('../../plugins/android-plugins'); 7*082815dcSEvan Bacon 8*082815dcSEvan Baconexport function mockModWithResults(withMod, modResults) { 9*082815dcSEvan Bacon withMod.mockImplementationOnce((config, action) => { 10*082815dcSEvan Bacon return action({ ...config, modResults }); 11*082815dcSEvan Bacon }); 12*082815dcSEvan Bacon} 13*082815dcSEvan Bacon 14*082815dcSEvan Bacon/** 15*082815dcSEvan Bacon * Mock a single mod and evaluate the plugin that uses that mod 16*082815dcSEvan Bacon * @param config 17*082815dcSEvan Bacon * @param param1 18*082815dcSEvan Bacon * @returns 19*082815dcSEvan Bacon */ 20*082815dcSEvan Baconexport async function compileMockModWithResultsAsync<T>( 21*082815dcSEvan Bacon config: Partial<ExpoConfig>, 22*082815dcSEvan Bacon { 23*082815dcSEvan Bacon mod, 24*082815dcSEvan Bacon plugin, 25*082815dcSEvan Bacon modResults, 26*082815dcSEvan Bacon }: { 27*082815dcSEvan Bacon mod: ConfigPlugin<Mod<T>>; 28*082815dcSEvan Bacon plugin: ConfigPlugin; 29*082815dcSEvan Bacon modResults: T; 30*082815dcSEvan Bacon } 31*082815dcSEvan Bacon): Promise<ExportedConfigWithProps<T>> { 32*082815dcSEvan Bacon mockModWithResults(mod, modResults); 33*082815dcSEvan Bacon return (await plugin(config as any)) as ExportedConfigWithProps<T>; 34*082815dcSEvan Bacon} 35