93 lines
3.1 KiB
JavaScript
93 lines
3.1 KiB
JavaScript
var mockPackage = require('../mocks/mockPackage');
|
|
var Dgeni = require('dgeni');
|
|
|
|
describe('cheatsheetItemParser', function() {
|
|
var dgeni, injector, cheatsheetItemParser;
|
|
|
|
beforeEach(function() {
|
|
dgeni = new Dgeni([mockPackage()]);
|
|
injector = dgeni.configureInjector();
|
|
cheatsheetItemParser = injector.get('cheatsheetItemParser');
|
|
var targetEnvironments = injector.get('targetEnvironments');
|
|
targetEnvironments.addAllowed('js');
|
|
targetEnvironments.addAllowed('ts', true);
|
|
});
|
|
|
|
describe('no language targets', function() {
|
|
it('should extract the syntax', function() {
|
|
expect(cheatsheetItemParser('syntax:\n`abc`')).toEqual({
|
|
syntax: 'abc',
|
|
bold: [],
|
|
description: ''
|
|
});
|
|
});
|
|
|
|
it('should extract the bolds', function() {
|
|
expect(cheatsheetItemParser('syntax:\n`abc`|`bold1`|`bold2`')).toEqual({
|
|
syntax: 'abc',
|
|
bold: ['bold1', 'bold2'],
|
|
description: ''
|
|
});
|
|
});
|
|
|
|
it('should extract the description', function() {
|
|
expect(cheatsheetItemParser('syntax:\n`abc`|`bold1`|`bold2`\ndescription:\nsome description')).toEqual({
|
|
syntax: 'abc',
|
|
bold: ['bold1', 'bold2'],
|
|
description: 'some description'
|
|
});
|
|
});
|
|
|
|
it('should allow bold to be optional', function() {
|
|
expect(cheatsheetItemParser('syntax:\n`abc`\ndescription:\nsome description')).toEqual({
|
|
syntax: 'abc',
|
|
bold: [],
|
|
description: 'some description'
|
|
});
|
|
});
|
|
|
|
it('should allow whitespace between the parts', function() {
|
|
expect(cheatsheetItemParser('syntax:\n`abc`| `bold1`| `bold2`\ndescription:\n\nsome description')).toEqual({
|
|
syntax: 'abc',
|
|
bold: ['bold1', 'bold2'],
|
|
description: 'some description'
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('with language targets', function() {
|
|
it('should extract the active language', function() {
|
|
expect(cheatsheetItemParser('syntax(ts):\n`abc`|`bold1`|`bold2`\ndescription(ts):\nsome description')).toEqual({
|
|
syntax: 'abc',
|
|
bold: ['bold1', 'bold2'],
|
|
description: 'some description'
|
|
});
|
|
});
|
|
|
|
it('should ignore the non-active language', function() {
|
|
expect(cheatsheetItemParser('syntax(js):\n`abc`|`bold1`|`bold2`\ndescription(js):\nsome description')).toEqual({
|
|
syntax: '',
|
|
bold: [],
|
|
description: ''
|
|
});
|
|
});
|
|
|
|
it('should select the active language and ignore non-active language', function() {
|
|
expect(cheatsheetItemParser(
|
|
'syntax(js):\n`JS`|`boldJS``\n' +
|
|
'syntax(ts):\n`TS`|`boldTS`\n' +
|
|
'description(js):\nJS description\n' +
|
|
'description(ts):\nTS description')).toEqual({
|
|
syntax: 'TS',
|
|
bold: ['boldTS'],
|
|
description: 'TS description'
|
|
});
|
|
});
|
|
|
|
it('should error if a language target is used that is not allowed', function() {
|
|
expect(function() {
|
|
cheatsheetItemParser('syntax(dart):\n`abc`|`bold1`|`bold2`\ndescription(ts):\nsome description');
|
|
}).toThrowError('Error accessing target "dart". It is not in the list of allowed targets: js,ts');
|
|
});
|
|
});
|
|
}); |