1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| import { describe, expect, it } from 'vitest';
|
| import { refreshFlowEditTime } from './flowEditTime';
|
| const now = new Date(2026, 8, 28, 14, 35, 47);
| const dateField = (name: string, updateOnFlowEdit = true, format = 'yyyy-MM-dd') => ({
| __vModel__: name,
| __config__: { jnpfKey: 'datePicker', updateOnFlowEdit },
| format,
| });
| const timeField = (name: string, updateOnFlowEdit = true, format = 'HH:mm:ss') => ({
| __vModel__: name,
| __config__: { jnpfKey: 'timePicker', updateOnFlowEdit },
| format,
| });
| const editConfig = { opType: '-1', id: 'task-1' };
|
| describe('refreshFlowEditTime', () => {
| it('updates enabled date and time fields using their configured formats', () => {
| const fields = [dateField('date'), dateField('dateTime', true, 'yyyy-MM-dd HH:mm'), timeField('time', true, 'HH:mm')];
| const data = { date: 1, dateTime: 2, time: '08:00' };
|
| const result = refreshFlowEditTime(fields, data, editConfig, now);
|
| expect(result).toEqual({
| date: new Date(2026, 8, 28).getTime(),
| dateTime: new Date(2026, 8, 28, 14, 35).getTime(),
| time: '14:35',
| });
| expect(data).toEqual({ date: 1, dateTime: 2, time: '08:00' });
| });
|
| it('preserves fields when the switch is off or the page is not a saved flow edit', () => {
| const fields = [dateField('date', false), timeField('time')];
| const data = { date: 1, time: '08:00' };
|
| expect(refreshFlowEditTime(fields, data, editConfig, now)).toEqual({ date: 1, time: '14:35:47' });
| for (const config of [
| { opType: '-1', id: '' },
| { opType: 3, id: 'task-1' },
| { ...editConfig, disabled: true },
| ]) {
| expect(refreshFlowEditTime(fields, data, config, now)).toEqual(data);
| }
| });
|
| it('updates subtable rows but respects field and table write permissions', () => {
| const fields = [
| {
| __vModel__: 'details',
| __config__: { jnpfKey: 'table', children: [dateField('date'), timeField('time')] },
| },
| ];
| const data = {
| details: [
| { date: 1, time: '08:00' },
| { date: 2, time: '09:00' },
| ],
| };
|
| const result = refreshFlowEditTime(fields, data, { ...editConfig, formOperates: [{ id: 'details-date', write: false }] }, now);
| expect(result.details).toEqual([
| { date: 1, time: '14:35:47' },
| { date: 2, time: '14:35:47' },
| ]);
| expect(data.details[0]?.time).toBe('08:00');
| expect(refreshFlowEditTime(fields, data, { ...editConfig, formOperates: [{ id: 'details', write: false }] }, now)).toEqual(data);
| });
| });
|
|