"use strict";
function ProjectUtils() {
const data = _interopRequireWildcard(require("../../project/ProjectUtils"));
ProjectUtils = function () {
return data;
};
return data;
}
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
jest.mock('analytics-node');
jest.mock('fs');
const mockfs = require('mock-fs');
const slugify = require('slugify');
const packageJson = {
name: 'testing123',
version: '0.5.0'
}; // these are intentionally different from package.json -- easy way to test fallbacks
const expJson = {
sdkVersion: '12.0.0',
name: 'My New Project',
slug: 'my-new-project',
version: '1.0.0'
};
const appJson = {
expo: {
sdkVersion: '12.0.0'
}
};
const packageJsonWithExp = {
name: 'testing456',
version: '0.7.0',
exp: expJson
};
const expJsonWithNodeModulesPath = {
sdkVersion: '12.0.0',
name: 'My New Project',
slug: 'my-new-project',
version: '1.0.0',
nodeModulesPath: 'node-modules-path'
};
function setupDirs() {
const fs = require('fs');
const packageJsonString = JSON.stringify(packageJson, null, 2);
fs.__configureFs({
'/home/mocky/appjson/package.json': packageJsonString,
'/home/mocky/appjson/app.json': JSON.stringify(appJson, null, 2),
'/home/mocky/expjson/package.json': packageJsonString,
'/home/mocky/expjson/exp.json': JSON.stringify(expJson, null, 2),
'/home/mocky/nojson/package.json': JSON.stringify(packageJsonWithExp, null, 2),
'/home/mocky/expjson-with-node-modules/exp.json': JSON.stringify(expJsonWithNodeModulesPath, null, 2),
'/home/mocky/expjson-with-node-modules/node-modules-path/package.json': packageJsonString
});
}
describe('readConfigJsonAsync', () => {
beforeEach(async () => {
setupDirs();
});
afterEach(() => {
mockfs.restore();
});
it('parses a project root with a normal exp.json', async () => {
const {
exp,
pkg
} = await ProjectUtils().readConfigJsonAsync('/home/mocky/expjson');
expect(exp).toEqual(expJson);
expect(pkg).toEqual(packageJson);
});
it('parses a project root with only a package.json', async () => {
const {
exp,
pkg
} = await ProjectUtils().readConfigJsonAsync('/home/mocky/nojson');
expect(exp).toEqual(expJson);
expect(pkg).toEqual(packageJsonWithExp);
});
it('parses a project root with an app.json relying on package.json fallbacks', async () => {
const {
exp,
pkg
} = await ProjectUtils().readConfigJsonAsync('/home/mocky/appjson');
expect(exp.sdkVersion).toEqual(appJson.expo.sdkVersion);
expect(exp.version).toEqual(packageJson.version);
expect(exp.name).toEqual(packageJson.name);
expect(exp.slug).toEqual(slugify(packageJson.name));
expect(pkg).toEqual(packageJson);
});
it('reads package.json at nodeModulesPath', async () => {
const {
exp,
pkg
} = await ProjectUtils().readConfigJsonAsync('/home/mocky/expjson-with-node-modules');
expect(exp).toEqual(expJsonWithNodeModulesPath);
expect(pkg).toEqual(packageJson);
});
});
//# sourceMappingURL=../../__sourcemaps__/__tests__/project/ProjectUtils-test.js.map