UNPKG

react-native-builder-bob

Version:

CLI to build JavaScript files for React Native libraries

106 lines (100 loc) 3.96 kB
"use strict"; var _vitest = require("vitest"); var _fsExtra = _interopRequireDefault(require("fs-extra")); var _nodePath = _interopRequireDefault(require("node:path")); var _patchCodegenAndroidPackage = require("./patchCodegenAndroidPackage"); var _mockFs = _interopRequireDefault(require("mock-fs")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const mockPackageJson = { codegenConfig: { outputDir: { android: 'android/generated' }, android: { javaPackageName: 'com.bobtest' } } }; const mockReport = { info: console.log, warn: console.log, error: console.error, success: console.log }; const mockJavaModuleSpec = ` /** * Some comment */ package com.facebook.fbreact.specs; import com.example.exampleimport; class SomeClass { public void someMethod() { // some code } }`; const mockJavaViewSpec = ` /** * Some comment */ package com.facebook.react.viewmanagers; public interface SomeInterface<T extends View> { void setColor(T view, @Nullable String value); } `; const mockProjectPath = _nodePath.default.resolve(__dirname, 'mockProject'); const mockCodegenModuleSpecsPath = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/facebook/fbreact/specs'); const mockCodegenViewSpecsPath = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/facebook/react/viewmanagers'); (0, _vitest.describe)('patchCodegenAndroidPackage', () => { (0, _vitest.beforeEach)(() => { (0, _mockFs.default)({ [mockProjectPath]: { 'package.json': JSON.stringify(mockPackageJson) }, [mockCodegenModuleSpecsPath]: { 'NativeBobtestSpec.java': mockJavaModuleSpec } }); }); (0, _vitest.afterEach)(() => { _mockFs.default.restore(); }); (0, _vitest.test)('moves the files to correct dir', async () => { await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport); const expectedDir = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/bobtest'); (0, _vitest.expect)(await _fsExtra.default.pathExists(expectedDir)).toBe(true); }); (0, _vitest.test)('replaces the package name in the files', async () => { await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport); const expectedDir = _nodePath.default.resolve(mockProjectPath, 'android/generated/java/com/bobtest'); const expectedFile = _nodePath.default.resolve(expectedDir, 'NativeBobtestSpec.java'); const fileContent = await _fsExtra.default.readFile(expectedFile, 'utf8'); (0, _vitest.expect)(fileContent).toContain('package com.bobtest;'); }); (0, _vitest.test)('removes the old package dir', async () => { await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJson, mockReport); (0, _vitest.expect)(await _fsExtra.default.pathExists(mockCodegenModuleSpecsPath)).toBe(false); }); (0, _vitest.test)("doesn't delete the view manager specs", async () => { const mockPackageJsonWithTypeAll = { ...mockPackageJson, codegenConfig: { ...mockPackageJson.codegenConfig, type: 'all' } }; (0, _mockFs.default)({ [mockProjectPath]: { 'package.json': JSON.stringify(mockPackageJsonWithTypeAll) }, [mockCodegenModuleSpecsPath]: { 'NativeBobtestSpec.java': mockJavaModuleSpec }, [mockCodegenViewSpecsPath]: { 'BobtestViewManagerInterface.java': mockJavaViewSpec } }); await (0, _patchCodegenAndroidPackage.patchCodegenAndroidPackage)(mockProjectPath, mockPackageJsonWithTypeAll, mockReport); (0, _vitest.expect)(await _fsExtra.default.pathExists(_nodePath.default.join(mockCodegenViewSpecsPath, 'BobtestViewManagerInterface.java'))).toBeTruthy(); }); }); //# sourceMappingURL=patchCodegenAndroidPackage.test.js.map