1082815dcSEvan Baconimport { ExpoConfig } from '@expo/config';
2082815dcSEvan Baconimport fs from 'fs';
3082815dcSEvan Baconimport { vol } from 'memfs';
4082815dcSEvan Baconimport path from 'path';
5082815dcSEvan Bacon
6*8a424bebSJames Ideimport rnFixture from './fixtures/react-native-project';
7082815dcSEvan Baconimport { withGradleProperties } from '../android-plugins';
8082815dcSEvan Baconimport { evalModsAsync } from '../mod-compiler';
9082815dcSEvan Baconimport { getAndroidModFileProviders, withAndroidBaseMods } from '../withAndroidBaseMods';
10082815dcSEvan Bacon
11082815dcSEvan Baconjest.mock('fs');
12082815dcSEvan Bacon
13082815dcSEvan Bacondescribe(withGradleProperties, () => {
14082815dcSEvan Bacon  const projectRoot = '/app';
15082815dcSEvan Bacon
16082815dcSEvan Bacon  beforeEach(async () => {
17ed3bd27bSEvan Bacon    vol.fromJSON(rnFixture, projectRoot);
18082815dcSEvan Bacon  });
19082815dcSEvan Bacon
20082815dcSEvan Bacon  afterEach(() => {
21082815dcSEvan Bacon    vol.reset();
22082815dcSEvan Bacon  });
23082815dcSEvan Bacon
24082815dcSEvan Bacon  it(`is passed gradle.properties`, async () => {
25082815dcSEvan Bacon    let config: ExpoConfig = {
26082815dcSEvan Bacon      name: 'foobar',
27082815dcSEvan Bacon      slug: 'foobar',
28082815dcSEvan Bacon    };
29082815dcSEvan Bacon
30082815dcSEvan Bacon    config = withGradleProperties(config, (config) => {
31082815dcSEvan Bacon      config.modResults.push({ type: 'comment', value: 'expo-test' });
32082815dcSEvan Bacon      config.modResults.push({ type: 'empty' });
33082815dcSEvan Bacon      config.modResults.push({ type: 'property', key: 'foo', value: 'bar' });
34082815dcSEvan Bacon      config.modResults.push({ type: 'empty' });
35082815dcSEvan Bacon      config.modResults.push({ type: 'comment', value: 'end-expo-test' });
36082815dcSEvan Bacon      return config;
37082815dcSEvan Bacon    });
38082815dcSEvan Bacon    config = withAndroidBaseMods(config, {
39082815dcSEvan Bacon      providers: {
40082815dcSEvan Bacon        gradleProperties: getAndroidModFileProviders().gradleProperties,
41082815dcSEvan Bacon      },
42082815dcSEvan Bacon    });
43082815dcSEvan Bacon
44082815dcSEvan Bacon    await evalModsAsync(config, {
45082815dcSEvan Bacon      projectRoot,
46082815dcSEvan Bacon      platforms: ['android'],
47082815dcSEvan Bacon      assertMissingModProviders: true,
48082815dcSEvan Bacon    });
49082815dcSEvan Bacon
50082815dcSEvan Bacon    const contents = fs.readFileSync(path.join(projectRoot, 'android/gradle.properties'), 'utf8');
51082815dcSEvan Bacon    expect(contents.endsWith('# expo-test\n\nfoo=bar\n\n# end-expo-test')).toBe(true);
52082815dcSEvan Bacon  });
53082815dcSEvan Bacon});
54