From c9c1c90b30e243563bb4f731da15b3fe657556d2 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Mon, 6 Nov 2023 18:08:04 +0100 Subject: refactor(components): replace Summary component with PostPreview * rename component to PostPreview because Summary is an HTML element and it could lead to confusion * replace `title` and `titleLevel` with `heading` and `headingLvl` because `title` is a native attribute * rename `intro` prop to `excerpt` * extract `cover` from `meta` prop * rewrite meta type * extract meta logic into a new component --- src/utils/helpers/reading-time.test.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/utils/helpers/reading-time.test.ts (limited to 'src/utils/helpers/reading-time.test.ts') diff --git a/src/utils/helpers/reading-time.test.ts b/src/utils/helpers/reading-time.test.ts new file mode 100644 index 0000000..24181a6 --- /dev/null +++ b/src/utils/helpers/reading-time.test.ts @@ -0,0 +1,31 @@ +import { describe, it } from '@jest/globals'; +import { getReadingTimeFrom } from './reading-time'; + +describe('reading-time', () => { + it('can transform a words count into a reading time in minutes', () => { + const wordsCount = 250; + + // With the default settings, 250 words should be rounded to one minute. + expect(getReadingTimeFrom(wordsCount).inMinutes()).toBe(1); + }); + + it('can transform a words count into a reading time in minutes and seconds', () => { + const wordsCount = 1200; + const readingTime = getReadingTimeFrom(wordsCount).inMinutesAndSeconds(); + + expect(readingTime.minutes).toBeGreaterThan(1); + expect(readingTime.seconds).toBeGreaterThan(0); + }); + + it('can use a custom words per minute setting', () => { + const wordsCount = 100; + const wordsPerMinute = 100; + const readingTime = getReadingTimeFrom( + wordsCount, + wordsPerMinute + ).inMinutesAndSeconds(); + + expect(readingTime.minutes).toBe(1); + expect(readingTime.seconds).toBe(0); + }); +}); -- cgit v1.2.3