This commit includes the following changes: * CLI version information is read from the CLI package from which we read the help files. * CLI API pages now contain GH links * line numbers are not shown in GH links, if the doc does not have a truthy `startingLine` value. This allows us to remove hard coded checks for `guide` pages * content pages and CLI api docs no longer have a `startingLine` * the hard-coded `packages` path segment has been removed from the templates; instead we now only use the `realProjectRelativePath`. * the `realProjectRelativePath` has been updated accordingly for API and CLI API docs. PR Close #26515
		
			
				
	
	
		
			120 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.6 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 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' }),
 | |
|       ]);
 | |
|     });
 | |
|   });
 | |
| });
 |