nx/packages/devkit/src/migrations/update-14-2-0/split-create-empty-tree.spec.ts
2022-11-23 15:45:13 -05:00

110 lines
3.3 KiB
TypeScript

import update from './split-create-empty-tree';
import { createTreeWithEmptyWorkspace } from '../../../testing';
import { addProjectConfiguration, Tree } from '@nrwl/devkit';
const TS_FILE_THAT_DOESNT_USE_EITHER = `import { other } from '@nrwl/devkit/testing';
other();`;
const TS_FILE_THAT_USES_DEFAULT = `import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
createTreeWithEmptyWorkspace();
`;
const TS_FILE_THAT_USES_V1 = `import { createTreeWithEmptyV1Workspace } from '@nrwl/devkit/testing';
createTreeWithEmptyV1Workspace();
`;
const TS_FILE_THAT_SPECIFIED_V2 = `import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
createTreeWithEmptyWorkspace(2);
`;
const TS_FILE_THAT_SPECIFIED_V1_AND_IMPORTED_ALL = `import * as devkit from '@nrwl/devkit/testing';
devkit.createTreeWithEmptyWorkspace(1);
`;
const TS_FILE_THAT_SPECIFIED_V1_AND_IMPORTED_ALL_UPDATED = `import * as devkit from '@nrwl/devkit/testing';
devkit.createTreeWithEmptyV1Workspace();
`;
const TS_FILE_THAT_SPECIFIED_V1 = `import { createTreeWithEmptyWorkspace, other } from '@nrwl/devkit/testing';
devkit.createTreeWithEmptyWorkspace(1);
`;
const TS_FILE_THAT_SPECIFIED_V1_UPDATED = `import { createTreeWithEmptyV1Workspace, other } from '@nrwl/devkit/testing';
devkit.createTreeWithEmptyV1Workspace();
`;
const TS_FILE_THAT_SPECIFIED_BOTH = `import { createTreeWithEmptyWorkspace, other } from '@nrwl/devkit/testing';
devkit.createTreeWithEmptyWorkspace(1);
devkit.createTreeWithEmptyWorkspace(2);
`;
const TS_FILE_THAT_SPECIFIED_BOTH_UPDATED = `import { createTreeWithEmptyV1Workspace, createTreeWithEmptyWorkspace, other } from '@nrwl/devkit/testing';
devkit.createTreeWithEmptyV1Workspace();
devkit.createTreeWithEmptyWorkspace();
`;
const testCases = [
{
initial: TS_FILE_THAT_DOESNT_USE_EITHER,
expected: TS_FILE_THAT_DOESNT_USE_EITHER,
message: `doesn't use util`,
},
{
initial: TS_FILE_THAT_USES_DEFAULT,
expected: TS_FILE_THAT_USES_V1,
message: `uses default value`,
},
{
initial: TS_FILE_THAT_SPECIFIED_V2,
expected: TS_FILE_THAT_USES_DEFAULT,
message: 'only specified default',
},
{
initial: TS_FILE_THAT_SPECIFIED_V1,
expected: TS_FILE_THAT_SPECIFIED_V1_UPDATED,
message: 'only specified v1',
},
{
initial: TS_FILE_THAT_SPECIFIED_V1_AND_IMPORTED_ALL,
expected: TS_FILE_THAT_SPECIFIED_V1_AND_IMPORTED_ALL_UPDATED,
message: 'only specified v1, and imported all',
},
{
initial: TS_FILE_THAT_SPECIFIED_BOTH,
expected: TS_FILE_THAT_SPECIFIED_BOTH_UPDATED,
message: 'specified both',
},
];
describe('update-14-2-0-split-create-empty-tree', () => {
it.each(testCases)(
'should match expected if file $message',
async ({ initial, expected }) => {
const { tree, tsFilePath } = createTreeWithBoilerplate();
tree.write(tsFilePath, initial);
await update(tree);
const contents = tree.read(tsFilePath).toString();
expect(contents).toEqual(expected);
}
);
});
function createTreeWithBoilerplate(): { tree: Tree; tsFilePath: string } {
const tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
const project = 'proj';
addProjectConfiguration(tree, project, {
root: `libs/${project}`,
});
return { tree, tsFilePath: `libs/${project}/some-file.ts` };
}