125 lines
3.7 KiB
JavaScript
125 lines
3.7 KiB
JavaScript
const cliCommandReaderFactory = require('./cli-command');
|
|
const reader = cliCommandReaderFactory();
|
|
|
|
const content = `
|
|
{
|
|
"name": "add",
|
|
"description": "Add support for a library to your project.",
|
|
"longDescription": "Add support for a library in your project, for example adding \`@angular/pwa\` which would configure\\nyour project for PWA support.\\n",
|
|
"hidden": false,
|
|
"type": "custom",
|
|
"options": [
|
|
{
|
|
"name": "collection",
|
|
"description": "The package to be added.",
|
|
"type": "string",
|
|
"required": false,
|
|
"aliases": [],
|
|
"hidden": false,
|
|
"positional": 0
|
|
},
|
|
{
|
|
"name": "help",
|
|
"description": "Shows a help message.",
|
|
"type": "boolean",
|
|
"required": false,
|
|
"aliases": [],
|
|
"hidden": false
|
|
},
|
|
{
|
|
"name": "helpJson",
|
|
"description": "Shows the metadata associated with each flags, in JSON format.",
|
|
"type": "boolean",
|
|
"required": false,
|
|
"aliases": [],
|
|
"hidden": false
|
|
}
|
|
],
|
|
"aliases": ['a'],
|
|
"scope": "in"
|
|
}
|
|
`;
|
|
|
|
const fileInfo = {content, baseName: 'add'};
|
|
|
|
describe('cli-command reader', () => {
|
|
describe('getDocs', () => {
|
|
it('should return an array containing a single doc', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs.length).toEqual(1);
|
|
});
|
|
|
|
it('should return a cli-command doc', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0]).toEqual(jasmine.objectContaining({
|
|
id: 'cli-add',
|
|
docType: 'cli-command',
|
|
}));
|
|
});
|
|
|
|
it('should extract the name from the fileInfo', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].name).toEqual('add');
|
|
});
|
|
|
|
it('should compute the id and aliases', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].id).toEqual('cli-add');
|
|
expect(docs[0].aliases).toEqual(['cli-add', 'cli-a']);
|
|
});
|
|
|
|
it('should compute the path and outputPath', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].path).toEqual('cli/add');
|
|
expect(docs[0].outputPath).toEqual('cli/add.json');
|
|
});
|
|
|
|
it('should compute the bread crumbs', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].breadCrumbs).toEqual([
|
|
{ text: 'CLI', path: 'cli' },
|
|
{ text: 'add', path: 'cli/add' },
|
|
]);
|
|
});
|
|
|
|
it('should start at line 1', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].startingLine).toEqual(1);
|
|
});
|
|
|
|
it('should extract the short description into the content', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].content).toEqual('Add support for a library to your project.');
|
|
});
|
|
|
|
it('should extract the long description', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].longDescription).toEqual('Add support for a library in your project, for example adding `@angular/pwa` which would configure\nyour project for PWA support.\n');
|
|
});
|
|
|
|
it('should extract the command type', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].type).toEqual('custom');
|
|
});
|
|
|
|
it('should extract the command scope', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].scope).toEqual('in');
|
|
});
|
|
|
|
it('should extract the command aliases', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].commandAliases).toEqual(['a']);
|
|
});
|
|
|
|
it('should extract the options', () => {
|
|
const docs = reader.getDocs(fileInfo);
|
|
expect(docs[0].options).toEqual([
|
|
jasmine.objectContaining({ name: 'collection' }),
|
|
jasmine.objectContaining({ name: 'help' }),
|
|
jasmine.objectContaining({ name: 'helpJson' }),
|
|
]);
|
|
});
|
|
});
|
|
});
|