@code-to-json/cli
Version:
73 lines (67 loc) • 1.95 kB
text/typescript
import { createTempFixtureFolder, TestCaseFolder } from '@code-to-json/test-helpers';
import { expect } from 'chai';
import { describe, it } from 'mocha';
import * as path from 'path';
import generateJSONCommand from '../src/commands/generate-json';
async function makeWorkspace(): Promise<TestCaseFolder> {
const workspace = await createTempFixtureFolder({
'tsconfig.json': JSON.stringify({
compilerOptions: {
target: 'ES2017',
noEmit: true,
},
}),
src: {
'index.ts': "const x: string = 'foo';",
'other.ts': "const y: string = 'bar';",
'more.js': "const z = 'baz';",
},
});
return workspace;
}
describe('Command tests', () => {
it('run command: --project', async () => {
const workspace = await makeWorkspace();
await generateJSONCommand({
project: workspace.rootPath,
out: workspace.rootPath,
format: 'formatted',
});
expect(workspace.toString()).to.eql(
`├─ formatted.json
├─ src
│ ├─ index.ts
│ ├─ more.js
│ └─ other.ts
└─ tsconfig.json
`,
);
workspace.cleanup();
});
it.skip('run command: entries', async () => {
const workspace = await makeWorkspace();
await generateJSONCommand({ out: path.join(workspace.rootPath, 'out') }, ['src/index.ts']);
expect(workspace.toString()).to.eql(
`├─ out
│ └─ formatted.json
├─ src
│ ├─ index.ts
│ ├─ more.js
│ └─ other.ts
└─ tsconfig.json
`,
);
workspace.cleanup();
});
it('run command: insufficient CLI args', async () => {
const workspace = await makeWorkspace();
try {
await generateJSONCommand({ out: path.join(workspace.rootPath, 'out') }).then(() => {
expect(false).to.eql(true);
});
} catch (err) {
expect(err.message).to.contain('Either --project <path> or entries glob(s) must be defined');
}
workspace.cleanup();
});
});