1import { vol } from 'memfs';
2import * as path from 'path';
3
4import rnFixture from '../../plugins/__tests__/fixtures/react-native-project';
5import { createBuildSourceFile } from '../XcodeProjectFile';
6import { getPbxproj } from '../utils/Xcodeproj';
7
8jest.mock('fs');
9
10describe(createBuildSourceFile, () => {
11  const projectRoot = '/alpha';
12  beforeAll(async () => {
13    vol.fromJSON(rnFixture, projectRoot);
14  });
15
16  afterAll(() => {
17    vol.reset();
18  });
19
20  it(`creates a source file`, () => {
21    const project = getPbxproj(projectRoot);
22    // perform action
23    createBuildSourceFile({
24      project,
25      nativeProjectRoot: path.join(projectRoot, 'ios'),
26      filePath: 'HelloWorld/myfile.swift',
27      fileContents: '// hello',
28    });
29
30    expect(project.hasFile('HelloWorld/myfile.swift')).toStrictEqual({
31      explicitFileType: undefined,
32      fileEncoding: 4,
33      includeInIndex: 0,
34      isa: 'PBXFileReference',
35      lastKnownFileType: 'sourcecode.swift',
36      name: '"myfile.swift"',
37      path: '"HelloWorld/myfile.swift"',
38      sourceTree: '"<group>"',
39    });
40
41    expect(vol.existsSync(path.join(projectRoot, 'ios/HelloWorld/myfile.swift'))).toBe(true);
42  });
43});
44