react-native-builder-bob
Version:
CLI to build JavaScript files for React Native libraries
106 lines (100 loc) • 3.96 kB
JavaScript
"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)({
[]: {
'package.json': JSON.stringify(mockPackageJson)
},
[]: {
'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)({
[]: {
'package.json': JSON.stringify(mockPackageJsonWithTypeAll)
},
[]: {
'NativeBobtestSpec.java': mockJavaModuleSpec
},
[]: {
'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