1*ed3bd27bSEvan Baconimport rnFixture from '../../plugins/__tests__/fixtures/react-native-project';
2*ed3bd27bSEvan Baconimport * as XML from '../../utils/XML';
3082815dcSEvan Baconimport { getAllowBackup, getAllowBackupFromManifest, setAllowBackup } from '../AllowBackup';
4*ed3bd27bSEvan Baconimport { AndroidManifest } from '../Manifest';
5082815dcSEvan Bacon
6*ed3bd27bSEvan Baconasync function getFixtureManifestAsync() {
7*ed3bd27bSEvan Bacon  return (await XML.parseXMLAsync(
8*ed3bd27bSEvan Bacon    rnFixture['android/app/src/main/AndroidManifest.xml']
9*ed3bd27bSEvan Bacon  )) as AndroidManifest;
10*ed3bd27bSEvan Bacon}
11082815dcSEvan Bacon
12082815dcSEvan Bacondescribe('allowBackup', () => {
13082815dcSEvan Bacon  it(`defaults to true`, () => {
14082815dcSEvan Bacon    expect(getAllowBackup({})).toBe(true);
15082815dcSEvan Bacon    expect(getAllowBackup({ android: { allowBackup: false } })).toBe(false);
16082815dcSEvan Bacon  });
17082815dcSEvan Bacon
18082815dcSEvan Bacon  it('sets the allowBackup property to true', async () => {
19*ed3bd27bSEvan Bacon    const androidManifestJsonUnaltered = await getFixtureManifestAsync();
20*ed3bd27bSEvan Bacon    let androidManifestJson = await getFixtureManifestAsync();
21082815dcSEvan Bacon    androidManifestJson = await setAllowBackup({}, { ...androidManifestJson });
22082815dcSEvan Bacon
23082815dcSEvan Bacon    const result = getAllowBackupFromManifest(androidManifestJson);
24*ed3bd27bSEvan Bacon    // The fixture has `android:allowBackup="false"`, lets test that it did in fact get modified.
25*ed3bd27bSEvan Bacon    expect(getAllowBackupFromManifest(androidManifestJsonUnaltered)).not.toEqual(result);
26*ed3bd27bSEvan Bacon
27082815dcSEvan Bacon    // Sanity check `getAllowBackupFromManifest` works as expected.
28082815dcSEvan Bacon    expect(result).toBe(true);
29082815dcSEvan Bacon  });
30082815dcSEvan Bacon  it('sets the allowBackup property to false', async () => {
31*ed3bd27bSEvan Bacon    const androidManifestJsonUnaltered = await getFixtureManifestAsync();
32*ed3bd27bSEvan Bacon    let androidManifestJson = await getFixtureManifestAsync();
33082815dcSEvan Bacon    androidManifestJson = await setAllowBackup(
34082815dcSEvan Bacon      { android: { allowBackup: false } },
35082815dcSEvan Bacon      androidManifestJson
36082815dcSEvan Bacon    );
37082815dcSEvan Bacon
38082815dcSEvan Bacon    const result = getAllowBackupFromManifest(androidManifestJson);
39*ed3bd27bSEvan Bacon
40*ed3bd27bSEvan Bacon    expect(androidManifestJsonUnaltered).toEqual(androidManifestJson);
41082815dcSEvan Bacon    expect(result).toBe(false);
42082815dcSEvan Bacon  });
43082815dcSEvan Bacon});
44