1082815dcSEvan Baconimport { vol } from 'memfs';
2082815dcSEvan Baconimport * as path from 'path';
3082815dcSEvan Bacon
4*ed3bd27bSEvan Baconimport rnFixture from '../../plugins/__tests__/fixtures/react-native-project';
5082815dcSEvan Baconimport { createBuildSourceFile } from '../XcodeProjectFile';
6082815dcSEvan Baconimport { getPbxproj } from '../utils/Xcodeproj';
7082815dcSEvan Bacon
8082815dcSEvan Baconjest.mock('fs');
9082815dcSEvan Bacon
10082815dcSEvan Bacondescribe(createBuildSourceFile, () => {
11082815dcSEvan Bacon  const projectRoot = '/alpha';
12082815dcSEvan Bacon  beforeAll(async () => {
13*ed3bd27bSEvan Bacon    vol.fromJSON(rnFixture, projectRoot);
14082815dcSEvan Bacon  });
15082815dcSEvan Bacon
16082815dcSEvan Bacon  afterAll(() => {
17082815dcSEvan Bacon    vol.reset();
18082815dcSEvan Bacon  });
19082815dcSEvan Bacon
20082815dcSEvan Bacon  it(`creates a source file`, () => {
21082815dcSEvan Bacon    const project = getPbxproj(projectRoot);
22082815dcSEvan Bacon    // perform action
23082815dcSEvan Bacon    createBuildSourceFile({
24082815dcSEvan Bacon      project,
25082815dcSEvan Bacon      nativeProjectRoot: path.join(projectRoot, 'ios'),
26*ed3bd27bSEvan Bacon      filePath: 'HelloWorld/myfile.swift',
27082815dcSEvan Bacon      fileContents: '// hello',
28082815dcSEvan Bacon    });
29082815dcSEvan Bacon
30*ed3bd27bSEvan Bacon    expect(project.hasFile('HelloWorld/myfile.swift')).toStrictEqual({
31082815dcSEvan Bacon      explicitFileType: undefined,
32082815dcSEvan Bacon      fileEncoding: 4,
33082815dcSEvan Bacon      includeInIndex: 0,
34082815dcSEvan Bacon      isa: 'PBXFileReference',
35082815dcSEvan Bacon      lastKnownFileType: 'sourcecode.swift',
36082815dcSEvan Bacon      name: '"myfile.swift"',
37*ed3bd27bSEvan Bacon      path: '"HelloWorld/myfile.swift"',
38082815dcSEvan Bacon      sourceTree: '"<group>"',
39082815dcSEvan Bacon    });
40082815dcSEvan Bacon
41*ed3bd27bSEvan Bacon    expect(vol.existsSync(path.join(projectRoot, 'ios/HelloWorld/myfile.swift'))).toBe(true);
42082815dcSEvan Bacon  });
43082815dcSEvan Bacon});
44