kt-template-online-api/test/common/format-date-time.decorator.spec.ts

51 lines
1.1 KiB
TypeScript

import {
FormatDateTime,
formatDateTimeFields,
formatKtDateTime,
vbenSuccess,
} from '../../src/common';
class DateTimeFormatFixture {
@FormatDateTime()
createTime!: Date;
@FormatDateTime()
updateTime!: string;
}
describe('FormatDateTime', () => {
it('formats decorated fields as YYYY-MM-DD HH:mm:ss', () => {
const data = new DateTimeFormatFixture();
data.createTime = new Date(2026, 4, 13, 10, 30, 0);
data.updateTime = '2026-05-13T10:31:00';
expect(formatDateTimeFields(data)).toEqual({
createTime: '2026-05-13 10:30:00',
updateTime: '2026-05-13 10:31:00',
});
});
it('does not recursively format response payloads', () => {
const createTime = new Date(2026, 4, 13, 10, 30, 0);
const response = vbenSuccess({
createTime,
nested: {
updateTime: '2026-05-13T10:31:00',
},
});
expect(response.data).toEqual({
createTime,
nested: {
updateTime: '2026-05-13T10:31:00',
},
});
});
it('exposes the configured formatter', () => {
expect(formatKtDateTime(new Date(2026, 4, 13, 10, 30, 0))).toBe(
'2026-05-13 10:30:00',
);
});
});