metalsmith-word-count
Version:
Metalsmith plugin to compute wordcount / average reading time of all paragraphs in a html file
85 lines (78 loc) • 2.52 kB
JavaScript
var path = require('path');
var expect = require('chai').expect;
var Metalsmith = require('metalsmith');
var wordcount = require('..');
describe('metalsmith-word-count', function() {
it('can count 30000 words accurately and estimates 100min reading time', function(done) {
Metalsmith('spec/fixture')
.use(wordcount())
.build(function(err, files) {
if (err) {
console.error(err);
}
// Standard settings are 300 words per 1 Minute, test that
expect(files["30000words.html"].wordCount).to.be.equal(30000);
expect(files["30000words.html"].readingTime).to.be.equal("100 min");
done();
});
});
it('can change reading speed and output also seconds', function(done) {
Metalsmith('spec/fixture')
.use(wordcount({
speed: 600,
seconds: true
}))
.build(function(err, files) {
if (err) {
console.error(err);
}
// 600 words per min = 50min (30000 words) = 3000 sec
expect(files["30000words.html"].readingTime).to.be.equal("50 minutes, 0 seconds");
done();
});
});
it('metakeys can be changed', function(done) {
Metalsmith('spec/fixture')
.use(wordcount({
metaKeyCount: "myCustomWordCountKey",
metaKeyReadingTime: "myCustomReadingTimeKey"
}))
.build(function(err, files) {
if (err) {
console.error(err);
}
expect(files["30000words.html"].myCustomWordCountKey).to.be.equal(30000);
expect(files["30000words.html"].myCustomReadingTimeKey).to.be.equal("100 min");
done();
});
});
it('estimate can also be returned as raw minutes', function(done) {
Metalsmith('spec/fixture')
.use(wordcount({
raw: true
}))
.build(function(err, files) {
if (err) {
console.error(err);
}
expect(files["30000words.html"].readingTime).to.be.equal(100);
expect(files["30000words.html"].wordCount).to.be.equal(30000);
done();
});
});
it('estimate can also be returned as raw seconds', function(done) {
Metalsmith('spec/fixture')
.use(wordcount({
raw: true,
seconds: true
}))
.build(function(err, files) {
if (err) {
console.error(err);
}
expect(files["30000words.html"].readingTime).to.be.equal(6000);
expect(files["30000words.html"].wordCount).to.be.equal(30000);
done();
});
});
});