UNPKG

jalali-date

Version:

A Jalali to Gregorian converter with support of formatting output

167 lines (126 loc) 4.75 kB
import { advanceTo, clear } from 'jest-date-mock'; import JDate from '../src/jdate'; describe('JDate', () => { it('should returns the current date by default', () => { advanceTo(new Date(2017, 10, 28)); const jdate = new JDate(); expect(jdate.date).toEqual([1396, 9, 7]); clear(); }); it('should convert a custom array', () => { const jdate = new JDate([1396, 10, 11]); expect(jdate.date).toEqual([1396, 10, 11]); expect(jdate.input).toEqual([1396, 10, 11]); expect(jdate._d).toBeInstanceOf(Date); expect(jdate._d.getFullYear()).toEqual(2018); expect(jdate._d.getMonth()).toEqual(0); expect(jdate._d.getDate()).toEqual(1); }); it('should convert by passing just integers', () => { const jdate = new JDate(1396, 10, 11); expect(jdate.date).toEqual([1396, 10, 11]); expect(jdate.input).toEqual([1396, 10, 11]); expect(jdate._d).toBeInstanceOf(Date); expect(jdate._d.getFullYear()).toEqual(2018); expect(jdate._d.getMonth()).toEqual(0); expect(jdate._d.getDate()).toEqual(1); }); it('should convert a JS date object', () => { const currentDate = new Date(2018, 0, 1); const jdate = new JDate(currentDate); expect(jdate.date).toEqual([1396, 10, 11]); expect(jdate.input).toEqual(currentDate); expect(jdate._d).toBeInstanceOf(Date); expect(jdate._d.getFullYear()).toEqual(2018); expect(jdate._d.getMonth()).toEqual(0); expect(jdate._d.getDate()).toEqual(1); }); it('should return correctly for #getFullYear', () => { const currentDate = new Date(2018, 0, 1); const jdate = new JDate(currentDate); expect(jdate.getFullYear()).toEqual(1396); }); it('should return correctly for #getMonth', () => { const currentDate = new Date(2018, 0, 1); const jdate = new JDate(currentDate); expect(jdate.getMonth()).toEqual(10); }); it('should return correctly for #getDate', () => { const currentDate = new Date(2018, 0, 1); const jdate = new JDate(currentDate); expect(jdate.getDate()).toEqual(11); }); it('should return correctly for #getDay', () => { const currentDate = new Date(2018, 0, 1); const jdate = new JDate(currentDate); expect(jdate.getDay()).toEqual(1); }); describe('.isLeapYear', () => { it('should return false for not leap year', () => { const result = JDate.isLeapYear(1393); expect(result).toBeFalsy(); }); it('should return true for leap year', () => { const result = JDate.isLeapYear(1395); expect(result).toBeTruthy(); }); }); describe('.daysInMonth', () => { it('should return 31 for month 5', () => { const result = JDate.daysInMonth(1393, 5); expect(result).toEqual(31); }); it('should return 30 for month 7', () => { const result = JDate.daysInMonth(1393, 6); expect(result).toEqual(30); }); it('should return 30 for leap year and month 11', () => { const result = JDate.daysInMonth(1395, 11); expect(result).toEqual(30); }); }); describe('.toGregorian', () => { it('should return the correct result', () => { const result = JDate.toGregorian(1393, 12, 11); expect([ result.getFullYear(), result.getMonth(), result.getDate() ]).toEqual([2015, 2, 2]); }); it('should also respond to "to_gregorian" for backport compatibility', () => { const result = JDate.to_gregorian(1393, 12, 11); expect([ result.getFullYear(), result.getMonth(), result.getDate() ]).toEqual([2015, 2, 2]); }); }); describe('.toJalali', () => { it('should return the correct result', () => { const result = JDate.toJalali(new Date(2025, 2, 20)); expect(result).toEqual([1403, 12, 30]); }); it('should also respond to "to_jalali" for backoprt compatibility', () => { const result = JDate.to_jalali(new Date(2015, 2, 2)); expect(result).toEqual([1393, 12, 11]); }); }); describe('.format', () => { it('should format the given date correctly', () => { const result = new JDate([1396, 8, 26]); expect(result.format('dddd DD MMMM YYYY')).toEqual('جمعه 26 آبان 1396'); }); it('should correctly format zero leading month', () => { const result = new JDate([1396, 8, 26]); expect(result.format('DD/MM/YYYY')).toEqual('26/08/1396'); expect(result.format('DD/M/YYYY')).toEqual('26/8/1396'); }); it('should correctly format zero leading day', () => { const result = new JDate([1396, 8, 6]); expect(result.format('D/MM/YYYY')).toEqual('6/08/1396'); expect(result.format('DD/MM/YYYY')).toEqual('06/08/1396'); }); }); });