1*ed3bd27bSEvan Baconimport rnFixture from '../../plugins/__tests__/fixtures/react-native-project';
2*ed3bd27bSEvan Baconimport * as XML from '../../utils/XML';
3*ed3bd27bSEvan Baconimport { AndroidManifest, getMainActivity } from '../Manifest';
4082815dcSEvan Baconimport { getOrientation, setAndroidOrientation } from '../Orientation';
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('Android orientation', () => {
13082815dcSEvan Bacon  it(`returns null if no orientation is provided`, () => {
14082815dcSEvan Bacon    expect(getOrientation({})).toBe(null);
15082815dcSEvan Bacon  });
16082815dcSEvan Bacon
17082815dcSEvan Bacon  it(`returns orientation if provided`, () => {
18082815dcSEvan Bacon    expect(getOrientation({ orientation: 'landscape' })).toMatch('landscape');
19082815dcSEvan Bacon  });
20082815dcSEvan Bacon
21082815dcSEvan Bacon  describe('File changes', () => {
22082815dcSEvan Bacon    let androidManifestJson;
23082815dcSEvan Bacon    it('adds orientation attribute if not present', async () => {
24*ed3bd27bSEvan Bacon      androidManifestJson = await getFixtureManifestAsync();
25082815dcSEvan Bacon      androidManifestJson = await setAndroidOrientation(
26082815dcSEvan Bacon        { orientation: 'landscape' },
27082815dcSEvan Bacon        androidManifestJson
28082815dcSEvan Bacon      );
29082815dcSEvan Bacon
30082815dcSEvan Bacon      const mainActivity = getMainActivity(androidManifestJson);
31082815dcSEvan Bacon
32*ed3bd27bSEvan Bacon      expect(mainActivity!.$['android:screenOrientation']).toMatch('landscape');
33082815dcSEvan Bacon    });
34082815dcSEvan Bacon
35082815dcSEvan Bacon    it('replaces orientation attribute if present', async () => {
36*ed3bd27bSEvan Bacon      androidManifestJson = await getFixtureManifestAsync();
37082815dcSEvan Bacon
38082815dcSEvan Bacon      androidManifestJson = await setAndroidOrientation(
39082815dcSEvan Bacon        { orientation: 'portrait' },
40082815dcSEvan Bacon        androidManifestJson
41082815dcSEvan Bacon      );
42082815dcSEvan Bacon
43082815dcSEvan Bacon      const mainActivity = getMainActivity(androidManifestJson);
44082815dcSEvan Bacon
45*ed3bd27bSEvan Bacon      expect(mainActivity!.$['android:screenOrientation']).toMatch('portrait');
46082815dcSEvan Bacon    });
47082815dcSEvan Bacon
48082815dcSEvan Bacon    it('replaces orientation with unspecified if provided default', async () => {
49*ed3bd27bSEvan Bacon      androidManifestJson = await getFixtureManifestAsync();
50082815dcSEvan Bacon      androidManifestJson = await setAndroidOrientation(
51082815dcSEvan Bacon        { orientation: 'default' },
52082815dcSEvan Bacon        androidManifestJson
53082815dcSEvan Bacon      );
54082815dcSEvan Bacon
55082815dcSEvan Bacon      const mainActivity = getMainActivity(androidManifestJson);
56082815dcSEvan Bacon
57*ed3bd27bSEvan Bacon      expect(mainActivity!.$['android:screenOrientation']).toMatch('unspecified');
58082815dcSEvan Bacon    });
59082815dcSEvan Bacon  });
60082815dcSEvan Bacon});
61