showdown/test/node/showdown.js
Estevão Soares dos Santos 3a924e3c7e feat(tables): add support for GFM tables
Github Flavored Markdown supports a specific table syntax. Table support was already available as an extension.
With this commit, the feature was moved to core, adding this feature to showdown through an option called "tables".

Related to #164
2015-07-11 16:44:24 +01:00

101 lines
2.8 KiB
JavaScript

require('source-map-support').install();
require('chai').should();
var expect = require('chai').expect,
showdown = require('../../dist/showdown.js');
describe('showdown.options', function () {
'use strict';
describe('setOption() and getOption()', function () {
it('should set option foo=bar', function () {
showdown.setOption('foo', 'bar');
showdown.getOption('foo').should.equal('bar');
showdown.resetOptions();
expect(showdown.getOption('foo')).to.be.undefined();
});
});
describe('getDefaultOptions()', function () {
it('should get default options', function () {
var opts = {
omitExtraWLInCodeBlocks: false,
prefixHeaderId: false,
noHeaderId: false,
headerLevelStart: 1,
parseImgDimensions: false,
simplifiedAutoLink: false,
literalMidWordUnderscores: false,
strikethrough: false,
tables: false
};
expect(showdown.getDefaultOptions()).to.be.eql(opts);
});
});
});
describe('showdown.extension()', function () {
'use strict';
var extObjMock = {
type: 'lang',
filter: function () {}
},
extObjFunc = function () {
return extObjMock;
};
describe('should register', function () {
it('an extension object', function () {
showdown.extension('foo', extObjMock);
showdown.extension('foo').should.eql([extObjMock]);
showdown.resetExtensions();
});
it('an extension function', function () {
showdown.extension('foo', extObjFunc);
showdown.extension('foo').should.eql([extObjMock]);
showdown.resetExtensions();
});
});
describe('should refuse to register', function () {
it('a generic object', function () {
var fn = function () {
showdown.extension('foo', {});
};
expect(fn).to.throw();
});
it('an extension with invalid type', function () {
var fn = function () {
showdown.extension('foo', {
type: 'foo'
});
};
expect(fn).to.throw(/type .+? is not recognized\. Valid values: "lang" or "output"/);
});
it('an extension without regex or filter', function () {
var fn = function () {
showdown.extension('foo', {
type: 'lang'
});
};
expect(fn).to.throw(/extensions must define either a "regex" property or a "filter" method/);
});
});
});
describe('showdown.getAllExtensions()', function () {
'use strict';
var extObjMock = {
type: 'lang',
filter: function () {}
};
it('should return all extensions', function () {
showdown.extension('bar', extObjMock);
showdown.getAllExtensions().should.eql({bar: [extObjMock]});
});
});