diff --git a/core/server/helpers/reading_time.js b/core/server/helpers/reading_time.js
index 691f401f4d..f4ede3c564 100644
--- a/core/server/helpers/reading_time.js
+++ b/core/server/helpers/reading_time.js
@@ -28,7 +28,6 @@ module.exports = function reading_time(options) {// eslint-disable-line camelcas
readingTimeSeconds,
readingTimeMinutes,
readingTime,
- seconds = _.isString(options.hash.seconds) ? options.hash.seconds : '< 1 min read',
minute = _.isString(options.hash.minute) ? options.hash.minute : '1 min read',
minutes = _.isString(options.hash.minutes) ? options.hash.minutes : '% min read';
@@ -50,9 +49,7 @@ module.exports = function reading_time(options) {// eslint-disable-line camelcas
readingTimeMinutes = Math.round(readingTimeSeconds / 60);
- if (readingTimeSeconds < 60) {
- readingTime = seconds;
- } else if (readingTimeMinutes === 1) {
+ if (readingTimeMinutes <= 1) {
readingTime = minute;
} else {
readingTime = minutes.replace('%', readingTimeMinutes);
diff --git a/core/test/unit/helpers/reading_time_spec.js b/core/test/unit/helpers/reading_time_spec.js
index 00008eab16..c69a24a65a 100644
--- a/core/test/unit/helpers/reading_time_spec.js
+++ b/core/test/unit/helpers/reading_time_spec.js
@@ -3,7 +3,7 @@ var should = require('should'), // jshint ignore:line
// Stuff we are testing
helpers = require('../../../server/helpers');
-var articleHtml =
+var almostOneMinute =
'
Ghost has a number of different user roles for your team
' +
'
Authors
The base user level in Ghost is an author. Authors can write posts,' +
' edit their own posts, and publish their own posts. Authors are trusted users. If you ' +
@@ -20,21 +20,34 @@ var articleHtml =
' users to fill out their user profiles, including bio and social links. These will populate rich structured data ' +
'for posts and generally create more opportunities for themes to fully populate their design.
';
+var almostOneAndAHalfMinute = almostOneMinute +
+ '' +
+ '
Ghost has a number of different user roles for your team
' +
+ '
Authors
The base user level in Ghost is an author. Authors can write posts,' +
+ ' edit their own posts, and publish their own posts. Authors are trusted users. If you ' +
+ 'don\'t trust users to be allowed to publish their own posts, you shouldn\'t invite them to Ghost admin.
' +
+ '
Editors
Editors are the 2nd user level in Ghost. Editors can do everything that an' +
+ ' Author can do, but they can also edit and publish the posts of others - as well as their own. Editors can also invite new' +
+ ' authors to the site.
Administrators
The top user level in Ghost is Administrator.' +
+ ' Again, administrators can do everything that Authors and Editors can do, but they can also edit all site settings ' +
+ 'and data, not just content. Additionally, administrators have full access to invite
' +
+ '
';
+
describe('{{reading_time}} helper', function () {
- it('[success] renders reading time for less than one minute text correctly', function () {
+ it('[success] renders reading time for less than one minute text as one minute', function () {
var data = {
- html: articleHtml,
+ html: almostOneMinute,
title: 'Test',
slug: 'slug'
},
result = helpers.reading_time.call(data);
- String(result).should.equal('< 1 min read');
+ String(result).should.equal('1 min read');
});
- it('[success] renders reading time for more than one minute text correctly', function () {
+ it('[success] renders reading time for one minute text as one minute', function () {
var data = {
- html: articleHtml +
+ html: almostOneMinute +
'This needed about twenty-five more words before passing the one minute reading time, ' +
'since the word count was 250, and the average speed is 275.',
title: 'Test',
@@ -45,32 +58,43 @@ describe('{{reading_time}} helper', function () {
String(result).should.equal('1 min read');
});
+ it('[success] renders reading time for just under 1.5 minutes text as one minute', function () {
+ var data = {
+ html: almostOneAndAHalfMinute,
+ title: 'Test',
+ slug: 'slug'
+ },
+ result = helpers.reading_time.call(data);
+
+ String(result).should.equal('1 min read');
+ });
+
it('[success] adds time for feature image', function () {
var data = {
- html: articleHtml,
+ html: almostOneAndAHalfMinute,
title: 'Test',
slug: 'slug',
feature_image: '/content/images/someimage.jpg'
},
result = helpers.reading_time.call(data);
- // The reading time for this HTML snippet would be 55 seconds without the image
- // Adding the 12 additional seconds for the image results in a reading time > 1 minute
- String(result).should.equal('1 min read');
+ // The reading time for this HTML snippet would 89 seconds without the image
+ // Adding the 12 additional seconds for the image results in a readng time of over 1.5 minutes, rounded to 2
+ String(result).should.equal('2 min read');
});
it('[success] adds time for inline images', function () {
var data = {
- html: articleHtml +
+ html: almostOneAndAHalfMinute +
'',
title: 'Test',
slug: 'slug'
},
result = helpers.reading_time.call(data);
- // The reading time for this HTML snippet would be 55 seconds without the image
- // Adding the 12 additional seconds for the image results in a reading time > 1 minute
- String(result).should.equal('1 min read');
+ // The reading time for this HTML snippet would 89 seconds without the image
+ // Adding the 12 additional seconds for the image results in a readng time of over 1.5 minutes, rounded to 2
+ String(result).should.equal('2 min read');
});
it('[failure] does not render reading time when not post', function () {