51 lines
1.1 KiB
TypeScript
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',
|
|
);
|
|
});
|
|
});
|