1import { AndroidConfig } from 'expo/config-plugins'; 2import { resolve } from 'path'; 3 4import { getBranchApiKey, setBranchApiKey } from '../withBranchAndroid'; 5 6const { findMetaDataItem, getMainApplication, readAndroidManifestAsync } = AndroidConfig.Manifest; 7 8const fixturesPath = resolve(__dirname, 'fixtures'); 9 10const sampleManifestPath = resolve(fixturesPath, 'react-native-AndroidManifest.xml'); 11 12describe(getBranchApiKey, () => { 13 it(`returns null if no android branch api key is provided`, () => { 14 expect(getBranchApiKey({ android: { config: {} } } as any)).toBe(null); 15 }); 16 17 it(`returns apikey if android branch api key is provided`, () => { 18 expect( 19 getBranchApiKey({ android: { config: { branch: { apiKey: 'MY-API-KEY' } } } } as any) 20 ).toBe('MY-API-KEY'); 21 }); 22}); 23 24describe(setBranchApiKey, () => { 25 it('sets branch api key in AndroidManifest.xml if given', async () => { 26 let androidManifestJson = await readAndroidManifestAsync(sampleManifestPath); 27 androidManifestJson = await setBranchApiKey( 28 { android: { config: { branch: { apiKey: 'MY-API-KEY' } } } } as any, 29 androidManifestJson 30 ); 31 let mainApplication = getMainApplication(androidManifestJson); 32 33 expect(findMetaDataItem(mainApplication, 'io.branch.sdk.BranchKey')).toBeGreaterThan(-1); 34 35 // Unset the item 36 37 androidManifestJson = await setBranchApiKey( 38 { android: { config: { branch: { apiKey: null } } } } as any, 39 androidManifestJson 40 ); 41 mainApplication = getMainApplication(androidManifestJson); 42 43 expect(findMetaDataItem(mainApplication, 'io.branch.sdk.BranchKey')).toBe(-1); 44 }); 45}); 46