/** * Test the ghostdown extension * * Only ever runs on the client (i.e in the editor) * Server processes showdown without it so there can never be an image upload form in a post. */ /*globals describe, it */ /*jshint expr:true*/ var should = require('should'), // Stuff we are testing ghostimagepreview = require('../../shared/lib/showdown/extensions/ghostimagepreview'); // To stop jshint complaining should.equal(true, true); describe('Ghost Image Preview showdown extension', function () { it('should export an array of methods for processing', function () { ghostimagepreview.should.be.a.function; ghostimagepreview().should.be.an.instanceof(Array); ghostimagepreview().forEach(function (processor) { processor.should.be.an.Object; processor.should.have.property('type'); processor.should.have.property('filter'); processor.type.should.be.a.String; processor.filter.should.be.a.function; }); }); it('should accurately detect images in markdown', function () { [ '![]', '![]()', '![image and another,/ image]', '![image and another,/ image]()', '![image and another,/ image](http://dsurl.stuff)', '![](http://dsurl.stuff)' /* No ref-style for now '![][]', '![image and another,/ image][stuff]', '![][stuff]', '![image and another,/ image][]' */ ] .forEach(function (imageMarkup) { var processedMarkup = ghostimagepreview().reduce(function (prev, processor) { return processor.filter(prev); }, imageMarkup); // The image is the entire markup, so the image box should be too processedMarkup.should.match(/^\n*$/); }); }); it('should correctly include an image', function () { [ '![image and another,/ image](http://dsurl.stuff)', '![](http://dsurl.stuff)' /* No ref-style for now '![image and another,/ image][test]\n\n[test]: http://dsurl.stuff', '![][test]\n\n[test]: http://dsurl.stuff' */ ] .forEach(function (imageMarkup) { var processedMarkup = ghostimagepreview().reduce(function (prev, processor) { return processor.filter(prev); }, imageMarkup); processedMarkup.should.match(/