react-native/local-cli/rnpm/core/test/ios/findProject.spec.js

85 lines
2.1 KiB
JavaScript

jest.autoMockOff();
const findProject = require('../../src/config/ios/findProject');
const mockFs = require('mock-fs');
const projects = require('../fixtures/projects');
const ios = require('../fixtures/ios');
const userConfig = {};
describe('ios::findProject', () => {
it('should return path to xcodeproj if found', () => {
mockFs(projects.flat);
expect(findProject('')).not.toBe(null);
});
it('should return null if there\'re no projects', () => {
mockFs({ testDir: projects });
expect(findProject('')).toBe(null);
});
it('should return ios project regardless of its name', () => {
mockFs({ ios: ios.validTestName });
expect(findProject('')).not.toBe(null);
});
it('should ignore node_modules', () => {
mockFs({ node_modules: projects.flat });
expect(findProject('')).toBe(null);
});
it('should ignore Pods', () => {
mockFs({ Pods: projects.flat });
expect(findProject('')).toBe(null);
});
it('should ignore Pods inside `ios` folder', () => {
mockFs({
ios: {
Pods: projects.flat,
DemoApp: projects.flat.ios,
},
});
expect(findProject('')).toBe('ios/DemoApp/demoProject.xcodeproj');
});
it('should ignore xcodeproj from example folders', () => {
mockFs({
examples: projects.flat,
Examples: projects.flat,
example: projects.flat,
KeychainExample: projects.flat,
Zpp: projects.flat,
});
expect(findProject('').toLowerCase()).not.toContain('example');
});
it('should ignore xcodeproj from sample folders', () => {
mockFs({
samples: projects.flat,
Samples: projects.flat,
sample: projects.flat,
KeychainSample: projects.flat,
Zpp: projects.flat,
});
expect(findProject('').toLowerCase()).not.toContain('sample');
});
it('should ignore xcodeproj from test folders at any level', () => {
mockFs({
test: projects.flat,
IntegrationTests: projects.flat,
tests: projects.flat,
Zpp: {
tests: projects.flat,
src: projects.flat,
},
});
expect(findProject('').toLowerCase()).not.toContain('test');
});
afterEach(mockFs.restore);
});