react-native-integrate
Version:
Automate integration of additional code into React Native projects
114 lines (113 loc) • 5.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
require('../../../mocks/mockAll');
const getAndroidAppId = jest.spyOn(require('../../../../utils/upgrade/android/importAndroidAppId'), 'importAndroidAppId');
const getAndroidDisplayName = jest.spyOn(require('../../../../utils/upgrade/android/importAndroidDisplayName'), 'importAndroidDisplayName');
const getAndroidLaunchIcon = jest.spyOn(require('../../../../utils/upgrade/android/importAndroidLaunchIcon'), 'importAndroidLaunchIcon');
const getAndroidVersionCode = jest.spyOn(require('../../../../utils/upgrade/android/importAndroidVersionCode'), 'importAndroidVersionCode');
const getAndroidVersionName = jest.spyOn(require('../../../../utils/upgrade/android/importAndroidVersionName'), 'importAndroidVersionName');
const getIosAssets = jest.spyOn(require('../../../../utils/upgrade/ios/importIosAssets'), 'importIosAssets');
const getIosBundleId = jest.spyOn(require('../../../../utils/upgrade/ios/importIosBundleId'), 'importIosBundleId');
const getIosDisplayName = jest.spyOn(require('../../../../utils/upgrade/ios/importIosDisplayName'), 'importIosDisplayName');
const getIosMarketingVersion = jest.spyOn(require('../../../../utils/upgrade/ios/importIosMarketingVersion'), 'importIosMarketingVersion');
const getIosProjectVersion = jest.spyOn(require('../../../../utils/upgrade/ios/importIosProjectVersion'), 'importIosProjectVersion');
const options_1 = require("../../../../options");
const importFromOldProject_1 = require("../../../../utils/upgrade/importFromOldProject");
const mockPrompter_1 = require("../../../mocks/mockPrompter");
const exampleGetter = {
id: 'androidAppId',
value: 'someAppId',
title: 'Android App Id',
apply: jest.fn(() => Promise.resolve()),
};
describe('importFromOldProject', () => {
beforeAll(() => {
getAndroidAppId.mockImplementation(() => exampleGetter);
getAndroidDisplayName.mockImplementation(() => ({
id: 'androidDisplayName',
value: 'someDisplayName',
title: 'Android Display Name',
apply: jest.fn(() => Promise.resolve()),
}));
getAndroidLaunchIcon.mockImplementation(() => ({
id: 'androidLaunchIcon',
value: 'someIcon',
title: 'Android Launch Icon',
apply: jest.fn(() => Promise.resolve()),
}));
getAndroidVersionCode.mockImplementation(() => ({
id: 'androidVersionCode',
value: 'someVersionCode',
title: 'Android Version Code',
apply: jest.fn(() => Promise.resolve()),
}));
getAndroidVersionName.mockImplementation(() => ({
id: 'androidVersionName',
value: 'someVersionName',
title: 'Android Version Name',
apply: jest.fn(() => Promise.resolve()),
}));
getIosAssets.mockImplementation(() => ({
id: 'iosAssets',
value: 'someAssets',
title: 'iOS Assets',
apply: jest.fn(() => Promise.resolve()),
}));
getIosBundleId.mockImplementation(() => ({
id: 'iosBundleId',
value: 'someBundleId',
title: 'iOS Bundle Id',
apply: jest.fn(() => Promise.resolve()),
}));
getIosDisplayName.mockImplementation(() => ({
id: 'iosDisplayName',
value: 'someDisplayName',
title: 'iOS Display Name',
apply: jest.fn(() => Promise.resolve()),
}));
getIosMarketingVersion.mockImplementation(() => ({
id: 'iosMarketingVersion',
value: 'someMarketingVersion',
title: 'iOS Marketing Version',
apply: jest.fn(() => Promise.resolve()),
}));
getIosProjectVersion.mockImplementation(() => ({
id: 'iosProjectVersion',
value: 'someProjectVersion',
title: 'iOS Project Version',
apply: jest.fn(() => Promise.resolve()),
}));
});
afterAll(() => {
getAndroidAppId.mockRestore();
getAndroidDisplayName.mockRestore();
getAndroidLaunchIcon.mockRestore();
getAndroidVersionCode.mockRestore();
getAndroidVersionName.mockRestore();
getIosAssets.mockRestore();
getIosBundleId.mockRestore();
getIosDisplayName.mockRestore();
getIosMarketingVersion.mockRestore();
getIosProjectVersion.mockRestore();
});
it('should skip when not confirmed', async () => {
options_1.options.get().manual = true;
mockPrompter_1.mockPrompter.confirm.mockImplementationOnce(() => false);
mockPrompter_1.mockPrompter.log.message.mockReset();
expect(await (0, importFromOldProject_1.importFromOldProject)('/oldProject')).toBeFalsy();
expect(mockPrompter_1.mockPrompter.log.message).toHaveBeenCalledWith(expect.stringContaining('skipping import from old project'));
mockPrompter_1.mockPrompter.confirm.mockReset();
});
it('should call importer apply', async () => {
mockPrompter_1.mockPrompter.confirm.mockImplementationOnce(() => true);
expect(await (0, importFromOldProject_1.importFromOldProject)('/oldProject')).toBeTruthy();
expect(exampleGetter.apply).toHaveBeenCalled();
});
it('should log warning on some error', async () => {
mockPrompter_1.mockPrompter.confirm.mockImplementationOnce(() => true);
mockPrompter_1.mockPrompter.log.warning.mockReset();
exampleGetter.apply.mockImplementationOnce(() => Promise.reject(new Error('some error')));
expect(await (0, importFromOldProject_1.importFromOldProject)('/oldProject')).toBeTruthy();
expect(mockPrompter_1.mockPrompter.log.warning).toHaveBeenCalledWith(expect.stringContaining('some error'));
});
});