From 7b45a0f43f45026c37f3ba0922c14070ee1e425f Mon Sep 17 00:00:00 2001 From: Bernhard Pottler Date: Wed, 24 Aug 2022 08:01:00 +0200 Subject: [PATCH] test: add tests for issue #2027 --- test/issues/issue2027.correct-order.test.js | 78 ++++++++++++++++++++ test/issues/issue2027.swapped-order.test.js | 79 +++++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 test/issues/issue2027.correct-order.test.js create mode 100644 test/issues/issue2027.swapped-order.test.js diff --git a/test/issues/issue2027.correct-order.test.js b/test/issues/issue2027.correct-order.test.js new file mode 100644 index 000000000..3d9d6300c --- /dev/null +++ b/test/issues/issue2027.correct-order.test.js @@ -0,0 +1,78 @@ +import MockDate from 'mockdate' +import dayjs from '../../src' +import duration from '../../src/plugin/duration' +import objectSupport from '../../src/plugin/objectSupport' + +dayjs.extend(objectSupport) +dayjs.extend(duration) + +beforeEach(() => { + MockDate.set(new Date()) +}) + +afterEach(() => { + MockDate.reset() +}) + +// issue 2027 +describe('issue 2027 - order objectSupport > Duration', () => { + it('add Duration object returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const durationToAdd = dayjs.duration(6, 'hours') + const testDate = baseDate.add(durationToAdd) + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 20:01:02.003') + }) + it('subtract Duration object returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const durationToAdd = dayjs.duration(6, 'hours') + const testDate = baseDate.subtract(durationToAdd) + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 08:01:02.003') + }) + + it('add number with unit returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const testDate = baseDate.add(6, 'hours') + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 20:01:02.003') + }) + it('subtract number with unit returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const testDate = baseDate.subtract(6, 'hours') + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 08:01:02.003') + }) + + it('parse string returns correct date', () => { + const testDate = dayjs('2022-06-26T14:01:02.003') + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 14:01:02.003') + }) + it('parse object returns correct date', () => { + const testDate = dayjs({ + year: '2022', + month: '05', + day: '26', + hour: '14', + minute: '01', + second: '02', + millisecond: '003' + }) + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 14:01:02.003') + }) + + it('set hour with number returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const testDate = baseDate.hour(10) + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 10:01:02.003') + }) + it('set hour with object returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const testDate = baseDate.set({ hour: '10' }) + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 10:01:02.003') + }) +}) diff --git a/test/issues/issue2027.swapped-order.test.js b/test/issues/issue2027.swapped-order.test.js new file mode 100644 index 000000000..62a969e49 --- /dev/null +++ b/test/issues/issue2027.swapped-order.test.js @@ -0,0 +1,79 @@ +import MockDate from 'mockdate' +import dayjs from '../../src' +import duration from '../../src/plugin/duration' +import objectSupport from '../../src/plugin/objectSupport' + +dayjs.extend(duration) +dayjs.extend(objectSupport) + +beforeEach(() => { + MockDate.set(new Date()) +}) + +afterEach(() => { + MockDate.reset() +}) + +// issue 2027 +describe('issue 2027 - order objectSupport > Duration', () => { + it('add Duration object returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const durationToAdd = dayjs.duration(6, 'hours') + const testDate = baseDate.add(durationToAdd) + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 20:01:02.003') + }) + + it('subtract Duration object returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const durationToAdd = dayjs.duration(6, 'hours') + const testDate = baseDate.subtract(durationToAdd) + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 08:01:02.003') + }) + + it('add number with unit returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const testDate = baseDate.add(6, 'hours') + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 20:01:02.003') + }) + it('subtract number with unit returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const testDate = baseDate.subtract(6, 'hours') + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 08:01:02.003') + }) + + it('parse string returns correct date', () => { + const testDate = dayjs('2022-06-26T14:01:02.003') + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 14:01:02.003') + }) + it('parse object returns correct date', () => { + const testDate = dayjs({ + year: '2022', + month: '05', + day: '26', + hour: '14', + minute: '01', + second: '02', + millisecond: '003' + }) + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 14:01:02.003') + }) + + it('set hour with number returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const testDate = baseDate.hour(10) + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 10:01:02.003') + }) + it('set hour with object returns correct date', () => { + const baseDate = dayjs('2022-06-26T14:01:02.003') + const testDate = baseDate.set({ hour: '10' }) + + expect(testDate.format('YYYY-MM-DD HH:mm:ss.SSS')).toBe('2022-06-26 10:01:02.003') + }) +})