react-native-builder-bob
Version:
CLI to build JavaScript files for React Native libraries
75 lines • 3.07 kB
JavaScript
import path from 'node:path';
import { afterEach, beforeEach, describe, expect, test } from 'vitest';
import fs from 'fs-extra';
import mockfs from 'mock-fs';
import { removeCodegenAppLevelCode } from "./removeCodegenAppLevelCode.js";
const mockPackageJson = {
codegenConfig: {
outputDir: {
android: 'android/generated',
ios: 'ios/generated',
},
},
};
const mockProjectPath = path.resolve(import.meta.dirname, 'mockProject');
describe('patchCodegenAndroidPackage', () => {
beforeEach(() => {
mockfs({
[mockProjectPath]: {
'package.json': JSON.stringify(mockPackageJson),
ios: {
generated: {
'RCTAppDependencyProvider.h': '',
'RCTAppDependencyProvider.mm': '',
'RCTModulesConformingToProtocolsProvider.h': '',
'RCTModulesConformingToProtocolsProvider.mm': '',
'RCTThirdPartyComponentsProvider.h': '',
'RCTThirdPartyComponentsProvider.mm': '',
'ReactAppDependencyProvider.podspec': '',
},
},
android: {
generated: {
'RCTAppDependencyProvider.h': '',
'RCTAppDependencyProvider.mm': '',
'RCTModulesConformingToProtocolsProvider.h': '',
'RCTModulesConformingToProtocolsProvider.mm': '',
'RCTThirdPartyComponentsProvider.h': '',
'RCTThirdPartyComponentsProvider.mm': '',
'ReactAppDependencyProvider.podspec': '',
},
},
},
});
});
afterEach(() => {
mockfs.restore();
});
test('removes the duplicate iOS files', async () => {
await removeCodegenAppLevelCode(mockProjectPath, mockPackageJson);
expect((await fs.promises.readdir(path.join(mockProjectPath, 'ios', 'generated'))).length).toBe(0);
});
test('removes the unnecessary Android files', async () => {
await removeCodegenAppLevelCode(mockProjectPath, mockPackageJson);
expect((await fs.promises.readdir(path.join(mockProjectPath, 'android', 'generated'))).length).toBe(0);
});
test("doesn't crash the process when there are no files to remove", async () => {
mockfs({
[mockProjectPath]: {
'package.json': JSON.stringify(mockPackageJson),
ios: {
generated: {
someRandomFile: '',
},
},
android: {
generated: {
someRandomFile: '',
},
},
},
});
await expect(removeCodegenAppLevelCode(mockProjectPath, mockPackageJson)).resolves.not.toThrow();
});
});
//# sourceMappingURL=removeCodegenAppLevelCode.test.js.map