1import { vol } from 'memfs';
2
3import rnFixture from '../../../prebuild/__tests__/fixtures/react-native-project';
4import { assembleAsync, installAsync } from '../../../start/platforms/android/gradle';
5import { resolveOptionsAsync } from '../resolveOptions';
6import { runAndroidAsync } from '../runAndroidAsync';
7
8jest.mock('../../../log');
9
10jest.mock('../../../utils/port', () => ({
11  resolvePortAsync: jest.fn(
12    async (root, { defaultPort, fallbackPort }) => defaultPort ?? fallbackPort
13  ),
14}));
15
16jest.mock('../../../start/platforms/android/gradle', () => ({
17  assembleAsync: jest.fn(async () => {}),
18  installAsync: jest.fn(async () => {}),
19}));
20
21jest.mock('../resolveDevice', () => ({
22  resolveDeviceAsync: jest.fn(async () => ({
23    device: {
24      name: 'mock',
25      pid: '123',
26    },
27  })),
28}));
29
30jest.mock('../../../utils/env', () => ({
31  env: {
32    CI: false,
33  },
34}));
35
36jest.mock('../../startBundler', () => ({
37  startBundlerAsync: jest.fn(() => ({
38    startAsync: jest.fn(),
39    getDefaultDevServer: jest.fn(() => ({
40      openCustomRuntimeAsync: jest.fn(),
41    })),
42  })),
43}));
44
45describe(resolveOptionsAsync, () => {
46  afterEach(() => vol.reset());
47
48  it(`runs android`, async () => {
49    vol.fromJSON(rnFixture, '/');
50
51    await runAndroidAsync('/', {});
52
53    expect(assembleAsync).toBeCalledWith('/android', {
54      appName: 'app',
55      buildCache: false,
56      port: 8081,
57      variant: 'debug',
58    });
59
60    expect(installAsync).toBeCalledWith('/android', {
61      appName: 'app',
62      port: 8081,
63      variant: 'debug',
64    });
65  });
66});
67