1082815dcSEvan Baconimport { vol } from 'memfs';
2082815dcSEvan Bacon
3*97e1898cSEvan Baconimport { getConfig, getWebOutputPath } from '../Config';
4082815dcSEvan Bacon
5082815dcSEvan Baconjest.mock('fs');
6082815dcSEvan Bacon
7*97e1898cSEvan Bacondescribe(getWebOutputPath, () => {
8082815dcSEvan Bacon  beforeAll(() => {
9082815dcSEvan Bacon    const packageJson = JSON.stringify(
10082815dcSEvan Bacon      {
11082815dcSEvan Bacon        name: 'testing123',
12082815dcSEvan Bacon        version: '0.1.0',
13082815dcSEvan Bacon        main: 'index.js',
14082815dcSEvan Bacon      },
15082815dcSEvan Bacon      null,
16082815dcSEvan Bacon      2
17082815dcSEvan Bacon    );
18082815dcSEvan Bacon
19082815dcSEvan Bacon    const appJson = {
20082815dcSEvan Bacon      name: 'testing 123',
21082815dcSEvan Bacon      version: '0.1.0',
22082815dcSEvan Bacon      slug: 'testing-123',
23082815dcSEvan Bacon      sdkVersion: '100.0.0',
24082815dcSEvan Bacon    };
25082815dcSEvan Bacon
26082815dcSEvan Bacon    vol.fromJSON({
27082815dcSEvan Bacon      '/standard/package.json': JSON.stringify(packageJson),
28082815dcSEvan Bacon      '/standard/app.json': JSON.stringify({ expo: appJson }),
29082815dcSEvan Bacon      '/custom/package.json': JSON.stringify(packageJson),
30082815dcSEvan Bacon      '/custom/app.json': JSON.stringify({
31082815dcSEvan Bacon        expo: { ...appJson, web: { build: { output: 'defined-in-config' } } },
32082815dcSEvan Bacon      }),
33082815dcSEvan Bacon    });
34082815dcSEvan Bacon  });
35082815dcSEvan Bacon  afterAll(() => vol.reset());
36082815dcSEvan Bacon
37082815dcSEvan Bacon  it('uses the default output build path for web', () => {
38*97e1898cSEvan Bacon    const { exp } = getConfig('/standard');
39082815dcSEvan Bacon    const outputPath = getWebOutputPath(exp);
40082815dcSEvan Bacon    expect(outputPath).toBe('web-build');
41082815dcSEvan Bacon  });
42082815dcSEvan Bacon
43082815dcSEvan Bacon  it('uses a custom output build path from the config', () => {
44*97e1898cSEvan Bacon    const { exp } = getConfig('/custom');
45082815dcSEvan Bacon    const outputPath = getWebOutputPath(exp);
46082815dcSEvan Bacon    expect(outputPath).toBe('defined-in-config');
47082815dcSEvan Bacon  });
48082815dcSEvan Bacon
49082815dcSEvan Bacon  beforeEach(() => {
50082815dcSEvan Bacon    delete process.env.WEBPACK_BUILD_OUTPUT_PATH;
51082815dcSEvan Bacon  });
52082815dcSEvan Bacon  it('uses an env variable for the web build path', () => {
53082815dcSEvan Bacon    process.env.WEBPACK_BUILD_OUTPUT_PATH = 'custom-env-path';
54082815dcSEvan Bacon
55082815dcSEvan Bacon    for (const project of ['/custom', '/standard']) {
56*97e1898cSEvan Bacon      const { exp } = getConfig(project);
57082815dcSEvan Bacon      const outputPath = getWebOutputPath(exp);
58082815dcSEvan Bacon      expect(outputPath).toBe('custom-env-path');
59082815dcSEvan Bacon    }
60082815dcSEvan Bacon  });
61082815dcSEvan Bacon});
62