const should = require('should'); const getExcerpt = require('../../../core/frontend/meta/generate-excerpt'); describe('getExcerpt', function () { it('should return html excerpt with no html', function () { const html = '

There are
10
types
of people in the world:' + 'c those who ' + 'understand trinary,

those who don\'t
and' + '< test > those<<< test >>> who mistake it <for> binary.'; const expected = 'There are 10 types of people in the world: those who understand trinary, those who ' + 'don\'t and those>> who mistake it <for> binary.'; getExcerpt(html, {}).should.equal(expected); }); it('should return html excerpt strips multiple inline footnotes', function () { const html = '

Testing1, ' + 'my footnotes. And stuff. Footnote2with a link ' + 'right after.'; const expected = 'Testing, my footnotes. And stuff. Footnotewith a link right after.'; getExcerpt(html, {}).should.equal(expected); }); it('should return html excerpt striping inline and bottom footnotes', function () { const html = '

Testing1' + ' a very short post with a single footnote.

\n' + '
  1. ' + 'https://ghost.org

'; const expected = 'Testing a very short post with a single footnote.'; getExcerpt(html, {}).should.equal(expected); }); it('should return html excerpt truncated by word', function () { const html = '

Hello World! It\'s me!

'; const expected = 'Hello World!'; getExcerpt(html, {words: '2'}).should.equal(expected); }); it('should return html excerpt truncated by words with non-ascii characters', function () { const html = '

Едквюэ опортэат праэчынт ючю но, квуй эю

'; const expected = 'Едквюэ опортэат'; getExcerpt(html, {words: '2'}).should.equal(expected); }); it('should return html excerpt truncated by character', function () { const html = '

Hello World! It\'s me!

'; const expected = 'Hello Wo'; getExcerpt(html, {characters: '8'}).should.equal(expected); }); it('should fall back to 50 words if not specified', function () { const html = '

There are
10
types
of people in the world:' + 'c those who ' + 'understand trinary,

those who don\'t
and' + '< test > those<<< test >>> who mistake it <for> binary.'; const expected = 'There are 10 types of people in the world: those who understand trinary, those who ' + 'don\'t and those>> who mistake it <for> binary.'; getExcerpt(html).should.equal(expected); }); it('should truncate plain text for custom excerpts', function () { const html = 'This is a custom excerpt. It should always be rendered in full length and not being cut ' + 'off. The maximum length of a custom excerpt is 300 characters. Enough to tell a bit about ' + 'your story and make a nice summary for your readers. It\s only allowed to truncate anything ' + 'after 300 characters. This give'; const expected = 'This is a custom excerpt. It should always be rendered in full length and not being cut ' + 'off. The maximum length of a custom excerpt is 300 characters. Enough to tell a bit about ' + 'your story and make a nice summary for your readers. It\s only allowed to truncate anything ' + 'after 300 characters. This give'; getExcerpt(html, {characters: '300'}).should.equal(expected); }); });