From cf455a13d5c4546ea35559a5eda1e3e0ab8dfadc Mon Sep 17 00:00:00 2001 From: sota1235 Date: Wed, 21 Dec 2016 19:13:05 +0900 Subject: [PATCH] add: util method for generating date --- browser/lib/date-formatter.js | 36 ++++++++++++++++++++++++++++ tests/date-formatter-test.js | 45 +++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 browser/lib/date-formatter.js create mode 100644 tests/date-formatter-test.js diff --git a/browser/lib/date-formatter.js b/browser/lib/date-formatter.js new file mode 100644 index 00000000..7bde426e --- /dev/null +++ b/browser/lib/date-formatter.js @@ -0,0 +1,36 @@ +/** + * @fileoverview Formatting date string. + */ + +/** @var {Array} */ +const monthMapings = [ + 'Jan.', 'Feb.', 'Mar.', 'Apr.', 'May', 'Jun.', + 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.', +]; + +/** + * @description Return date string. For example, 'Sep.9, 2016 12:00'. + * @param {Date} + * @return {string} + */ +export function getLastUpdated(date) { + if (!(date instanceof Date)) { + throw Error('Invalid argument. Only instance of Date Object'); + } + + const year = date.getFullYear(); + const month = monthMapings[date.getMonth()]; + const day = date.getDate(); + let hour = date.getHours(); + let minute = date.getMinutes(); + + if (hour < 10) { + hour = `0${hour}`; + } + + if (minute < 10) { + minute = `0${minute}`; + } + + return `${month}${day}, ${year} ${hour}:${minute}`; +} diff --git a/tests/date-formatter-test.js b/tests/date-formatter-test.js new file mode 100644 index 00000000..6bef25cb --- /dev/null +++ b/tests/date-formatter-test.js @@ -0,0 +1,45 @@ +/** + * @fileoverview Unit test for browser/lib/date-formatter.js + */ +const test = require('ava') +const { getLastUpdated } = require('browser/lib/date-formatter') + +/** + * @description Get local Date insance. + * @param {numbr} year + * @param {number} month + * @param {number} day + * @param {number} hour + * @param {number} minute + * @param {number} second + * @return {Date} + */ +function generateLocalDate(year, month, day, hour, minute, second) { + const date = new Date() + date.setDate(day) + date.setFullYear(year) + date.setHours(hour) + date.setMinutes(minute) + date.setMonth(month - 1) + date.setSeconds(second) + return date +} + +test(t => { + const testCases = [ + [generateLocalDate(2016, 9, 9, 12, 0, 0), 'Sep.9, 2016 12:00'], + [generateLocalDate(2016, 9, 9, 2, 0, 0), 'Sep.9, 2016 02:00'], + [generateLocalDate(2016, 5, 9, 2, 1, 0), 'May9, 2016 02:01'], + ] + + for (let testCase of testCases) { + t.is(testCase[1], getLastUpdated(testCase[0])) + } +}) + +test(t => { + t.throws( + () => getLastUpdated('invalid argument'), + 'Invalid argument. Only instance of Date Object' + ) +})