'use strict'; var formatDate = require('../src/js/formatDate'); describe('date format', function() { it('date format function is defined', function() { expect(formatDate).toBeDefined(); }); describe('test various inputs', function() { var inputs = [ {year: 1999, month: 9, date: 9, hour: 0, minute: 2}, {year: 2010, month: 12, date: 13, hour: 10, minute: 0}, {year: 12, month: 1, date: 29, hour: 23, minute: 40} ], forms = [ 'yyyy-MM-dd', 'yy-MM-dd', 'yy-MM-DD', 'yyyy년 M월 dd일', 'yy, M-dd', 'yyyy년 M/d', 'yyyy-MM-d', '\\a, yyyy-MM-d', 'MMM DD YYYY HH:mm', 'MMMM DD YYYY H:m A' ]; describe('plain object', function() { describe('{year: 1999, month: 9, date: 9, hour: 0, minute: 2}', function() { it('-> yyyy-MM-dd', function() { expect(formatDate(forms[0], inputs[0])).toEqual('1999-09-09'); }); it('-> yy-MM-dd', function() { expect(formatDate(forms[1], inputs[0])).toEqual('99-09-09'); }); it('-> yy-MM-DD', function() { expect(formatDate(forms[2], inputs[0])).toEqual('99-09-09'); }); it('-> yyyy년 M월 dd일', function() { expect(formatDate(forms[3], inputs[0])).toEqual('1999년 9월 09일'); }); it('-> yy, M-dd', function() { expect(formatDate(forms[4], inputs[0])).toEqual('99, 9-09'); }); it('-> yyyy년 M/d', function() { expect(formatDate(forms[5], inputs[0])).toEqual('1999년 9/9'); }); it('-> yyyy-MM-d', function() { expect(formatDate(forms[6], inputs[0])).toEqual('1999-09-9'); }); it('-> \\a, yyyy-MM-d', function() { expect(formatDate(forms[7], inputs[0])).toEqual('a, 1999-09-9'); }); it('-> MMM DD YYYY HH:mm', function() { expect(formatDate(forms[8], inputs[0])).toEqual('Sep 09 1999 00:02'); }); it('-> MMMM DD YYYY H:m A', function() { expect(formatDate(forms[9], inputs[0])).toEqual('September 09 1999 12:2 AM'); }); }); describe('{year: 2010, month: 12, date: 13, hour: 10, minute: 0}', function() { it('-> yyyy-MM-dd', function() { expect(formatDate(forms[0], inputs[1])).toEqual('2010-12-13'); }); it('-> yy-MM-dd', function() { expect(formatDate(forms[1], inputs[1])).toEqual('10-12-13'); }); it('-> yy-MM-DD', function() { expect(formatDate(forms[2], inputs[1])).toEqual('10-12-13'); }); it('-> yyyy년 M월 dd일', function() { expect(formatDate(forms[3], inputs[1])).toEqual('2010년 12월 13일'); }); it('-> yy, M-dd', function() { expect(formatDate(forms[4], inputs[1])).toEqual('10, 12-13'); }); it('-> yyyy년 M/d', function() { expect(formatDate(forms[5], inputs[1])).toEqual('2010년 12/13'); }); it('-> yyyy-MM-d', function() { expect(formatDate(forms[6], inputs[1])).toEqual('2010-12-13'); }); it('-> \\a, yyyy-MM-d', function() { expect(formatDate(forms[7], inputs[1])).toEqual('a, 2010-12-13'); }); it('-> MMM DD YYYY HH:mm', function() { expect(formatDate(forms[8], inputs[1])).toEqual('Dec 13 2010 10:00'); }); it('-> MMMM DD YYYY H:m A', function() { expect(formatDate(forms[9], inputs[1])).toEqual('December 13 2010 10:0 AM'); }); }); describe('{year: 12, month: 1, date: 29, hour: 23, minute: 40}', function() { it('-> yyyy-MM-dd', function() { expect(formatDate(forms[0], inputs[2])).toEqual('2012-01-29'); }); it('-> yy-MM-dd', function() { expect(formatDate(forms[1], inputs[2])).toEqual('12-01-29'); }); it('-> yy-MM-DD', function() { expect(formatDate(forms[2], inputs[2])).toEqual('12-01-29'); }); it('-> yyyy년 M월 dd일', function() { expect(formatDate(forms[3], inputs[2])).toEqual('2012년 1월 29일'); }); it('-> yy, M-dd', function() { expect(formatDate(forms[4], inputs[2])).toEqual('12, 1-29'); }); it('-> yyyy년 M/d', function() { expect(formatDate(forms[5], inputs[2])).toEqual('2012년 1/29'); }); it('-> yyyy-MM-d', function() { expect(formatDate(forms[6], inputs[2])).toEqual('2012-01-29'); }); it('-> \\a, yyyy-MM-d', function() { expect(formatDate(forms[7], inputs[2])).toEqual('a, 2012-01-29'); }); it('-> MMM DD YYYY HH:mm', function() { expect(formatDate(forms[8], inputs[2])).toEqual('Jan 29 2012 23:40'); }); it('-> MMMM DD YYYY H:m A', function() { expect(formatDate(forms[9], inputs[2])).toEqual('January 29 2012 11:40 PM'); }); }); }); describe('Date Object', function() { describe('new Date(1999, 8, 9, 0, 2}', function() { it('-> yyyy-MM-dd', function() { var date = inputs[0], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[0], dt)).toEqual('1999-09-09'); }); it('-> yy-MM-dd', function() { var date = inputs[0], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[1], dt)).toEqual('99-09-09'); }); it('-> yy-MM-DD', function() { var date = inputs[0], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[2], dt)).toEqual('99-09-09'); }); it('-> yyyy년 M월 dd일', function() { var date = inputs[0], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[3], dt)).toEqual('1999년 9월 09일'); }); it('-> yy, M-dd', function() { var date = inputs[0], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[4], dt)).toEqual('99, 9-09'); }); it('-> yyyy년 M/d', function() { var date = inputs[0], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[5], dt)).toEqual('1999년 9/9'); }); it('-> yyyy-MM-d', function() { var date = inputs[0], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[6], dt)).toEqual('1999-09-9'); }); it('-> \\a, yyyy-MM-d', function() { var date = inputs[0], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[7], dt)).toEqual('a, 1999-09-9'); }); it('-> MMM DD YYYY HH:mm', function() { var date = inputs[0], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[8], dt)).toEqual('Sep 09 1999 00:02'); }); it('-> MMMM DD YYYY H:m A', function() { var date = inputs[0], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[9], dt)).toEqual('September 09 1999 12:2 AM'); }); }); describe('new Date(2010, 11, 13, 10, 0)', function() { it('-> yyyy-MM-dd', function() { var date = inputs[1], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[0], dt)).toEqual('2010-12-13'); }); it('-> yy-MM-dd', function() { var date = inputs[1], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[1], dt)).toEqual('10-12-13'); }); it('-> yy-MM-DD', function() { var date = inputs[1], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[2], dt)).toEqual('10-12-13'); }); it('-> yyyy년 M월 dd일', function() { var date = inputs[1], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[3], dt)).toEqual('2010년 12월 13일'); }); it('-> yy, M-dd', function() { var date = inputs[1], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[4], dt)).toEqual('10, 12-13'); }); it('-> yyyy년 M/d', function() { var date = inputs[1], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[5], dt)).toEqual('2010년 12/13'); }); it('-> yyyy-MM-d', function() { var date = inputs[1], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[6], dt)).toEqual('2010-12-13'); }); it('-> \\a, yyyy-MM-d', function() { var date = inputs[1], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[7], dt)).toEqual('a, 2010-12-13'); }); it('-> MMM DD YYYY HH:mm', function() { var date = inputs[1], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[8], dt)).toEqual('Dec 13 2010 10:00'); }); it('-> MMMM DD YYYY H:m A', function() { var date = inputs[1], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[9], dt)).toEqual('December 13 2010 10:0 AM'); }); }); describe('new Date(2012, 0, 29, 23, 40)', function() { it('-> yyyy-MM-dd', function() { var date = inputs[2], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[0], dt)).toEqual('2012-01-29'); }); it('-> yy-MM-dd', function() { var date = inputs[2], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[1], dt)).toEqual('12-01-29'); }); it('-> yy-MM-DD', function() { var date = inputs[2], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[2], dt)).toEqual('12-01-29'); }); it('-> yyyy년 M월 dd일', function() { var date = inputs[2], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[3], dt)).toEqual('2012년 1월 29일'); }); it('-> yy, M-dd', function() { var date = inputs[2], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[4], dt)).toEqual('12, 1-29'); }); it('-> yyyy년 M/d', function() { var date = inputs[2], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[5], dt)).toEqual('2012년 1/29'); }); it('-> yyyy-MM-d', function() { var date = inputs[2], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[6], dt)).toEqual('2012-01-29'); }); it('-> \\a, yyyy-MM-d', function() { var date = inputs[2], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[7], dt)).toEqual('a, 2012-01-29'); }); it('-> MMM DD YYYY HH:mm', function() { var date = inputs[2], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[8], dt)).toEqual('Jan 29 2012 23:40'); }); it('-> MMMM DD YYYY H:m A', function() { var date = inputs[2], nYear = (date.year < 100) ? date.year + 2000 : date.year, nMonth = date.month - 1, nDate = date.date, dt = new Date(nYear, nMonth, nDate, date.hour, date.minute); expect(formatDate(forms[9], dt)).toEqual('January 29 2012 11:40 PM'); }); }); }); describe('meridiemSet', function() { it('AM -> 오전', function() { var option = { meridiemSet: { AM: '오전', PM: '오후' } }; var date = {year: 1999, month: 9, date: 9, hour: 0, minute: 2}; expect(formatDate('yyyy-MM-dd a hh:mm', date, option)).toEqual('1999-09-09 오전 12:02'); }); it('PM -> 오후', function() { var option = { meridiemSet: { AM: '오전', PM: '오후' } }; var date = {year: 1999, month: 9, date: 9, hour: 13, minute: 2}; expect(formatDate('yyyy-MM-dd A hh:mm', date, option)).toEqual('1999-09-09 오후 01:02'); }); }); it('not full-date but time format', function() { var date = {year: 1999, month: 9, date: 9, hour: 2, minute: 3}; expect(formatDate('a hh:mm', date)).toEqual('AM 02:03'); }); it('not full-date but time format with meridiemSet', function() { var option = { meridiemSet: { AM: '오전', PM: '오후' } }; var date = {year: 1999, month: 9, date: 9, hour: 12, minute: 3}; // See the clock system: https://en.wikipedia.org/wiki/12-hour_clock expect(formatDate('a hh:mm', date, option)).toEqual('오후 12:03'); }); }); });