| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /**
- * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
- * SPDX-License-Identifier: MIT
- */
- import { beforeEach, describe, it, expect, vi } from 'vitest';
- import { FieldArrayModel, FormModel } from '@flowgram.ai/form';
- import { HistoryService } from '@flowgram.ai/history';
- import * as utils from '../src/utils';
- import { createContainer } from './create-container';
- function delay(timeout: number) {}
- describe('form', () => {
- let formModel: FormModel;
- let historyService: HistoryService;
- beforeEach(() => {
- const container = createContainer();
- formModel = container.formModel;
- historyService = container.historyService;
- vi.spyOn(utils, 'getFormModelV2').mockImplementation(() => formModel as any);
- vi.useFakeTimers();
- });
- it('object set', async () => {
- const obj = formModel.createField('obj');
- const fieldA = formModel.createField('obj.a');
- fieldA.value = 1;
- vi.advanceTimersByTime(500);
- fieldA.value = 2;
- obj.value = { a: 3 };
- await historyService.undo();
- expect(obj.value).toEqual({ a: 1 });
- await historyService.redo();
- expect(obj.value).toEqual({ a: 3 });
- });
- it('array delete', async () => {
- formModel.createFieldArray('arr');
- const arrField = formModel.getField<FieldArrayModel>('arr')!;
- expect(arrField.value).toEqual(undefined);
- arrField.value = ['a', 'b', 'c'];
- expect(arrField.value).toEqual(['a', 'b', 'c']);
- vi.advanceTimersByTime(500);
- arrField.delete(1);
- expect(arrField.value).toEqual(['a', 'c']);
- await historyService.undo();
- expect(arrField.value).toEqual(['a', 'b', 'c']);
- await historyService.redo();
- expect(arrField.value).toEqual(['a', 'c']);
- });
- it('array append', async () => {
- formModel.createFieldArray('arr');
- const arrField = formModel.getField<FieldArrayModel>('arr')!;
- arrField.value = ['a'];
- expect(arrField.value).toEqual(['a']);
- await historyService.undo();
- expect(arrField.value).toEqual(undefined);
- await historyService.redo();
- expect(arrField.value).toEqual(['a']);
- vi.advanceTimersByTime(500);
- arrField.append('b');
- expect(arrField.value).toEqual(['a', 'b']);
- await historyService.undo();
- expect(arrField.value).toEqual(['a']);
- await historyService.redo();
- expect(arrField.value).toEqual(['a', 'b']);
- });
- it('array set', async () => {
- formModel.createFieldArray('arr');
- const arrField = formModel.getField<FieldArrayModel>('arr')!;
- arrField.value = ['a'];
- expect(arrField.value).toEqual(['a']);
- vi.advanceTimersByTime(500);
- formModel.setValueIn('arr.0', undefined);
- expect(arrField.value).toEqual([undefined]);
- await historyService.undo();
- expect(arrField.value).toEqual(['a']);
- await historyService.redo();
- expect(arrField.value).toEqual([undefined]);
- });
- });
|