mirror of
				https://github.com/Tencent/tmagic-editor.git
				synced 2025-11-04 18:52:18 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			132 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/*
 | 
						|
 * Tencent is pleased to support the open source community by making MagicEditor available.
 | 
						|
 *
 | 
						|
 * Copyright (C) 2021 THL A29 Limited, a Tencent company.  All rights reserved.
 | 
						|
 *
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 *
 | 
						|
 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 */
 | 
						|
 | 
						|
import { flushPromises, mount } from '@vue/test-utils';
 | 
						|
import { ElDialog } from 'element-plus';
 | 
						|
 | 
						|
import FormDialog from '@src/components/form-dialog.vue';
 | 
						|
import { components } from '@tests/utils';
 | 
						|
 | 
						|
const getWrapper = (
 | 
						|
  formProps: any = {
 | 
						|
    values: {
 | 
						|
      text: 'test',
 | 
						|
    },
 | 
						|
    config: [{ name: 'text', text: '测试输入' }],
 | 
						|
    visible: true,
 | 
						|
    action: jest.fn(() => ({ ret: 0 })),
 | 
						|
    title: '测试',
 | 
						|
  },
 | 
						|
) =>
 | 
						|
  mount(FormDialog, {
 | 
						|
    props: formProps,
 | 
						|
    global: {
 | 
						|
      components: {
 | 
						|
        ...components,
 | 
						|
        'el-dialog': ElDialog,
 | 
						|
      },
 | 
						|
    },
 | 
						|
  });
 | 
						|
 | 
						|
describe('FormDialog', () => {
 | 
						|
  it('关闭对话框', async () => {
 | 
						|
    const wrapper = getWrapper();
 | 
						|
    const dialog = wrapper.findComponent(ElDialog);
 | 
						|
    (dialog.vm.$props as any).beforeClose();
 | 
						|
    expect(wrapper.emitted()).toHaveProperty('close');
 | 
						|
  });
 | 
						|
 | 
						|
  it('保存活动-成功', async () => {
 | 
						|
    const wrapper = getWrapper();
 | 
						|
 | 
						|
    const mockForm = {
 | 
						|
      resetForm: jest.fn(),
 | 
						|
      submitForm: jest.fn(() => 'test'),
 | 
						|
    };
 | 
						|
    wrapper.vm.form = mockForm;
 | 
						|
    wrapper.vm.save();
 | 
						|
    await flushPromises();
 | 
						|
    expect(wrapper.emitted()).toHaveProperty('close');
 | 
						|
    expect(wrapper.emitted()).toHaveProperty('afterAction');
 | 
						|
    expect((wrapper.emitted() as any).afterAction[0][0]).toEqual({ ret: 0 });
 | 
						|
  });
 | 
						|
 | 
						|
  it('保存活动-请求出错', async () => {
 | 
						|
    const failProps = {
 | 
						|
      values: {
 | 
						|
        text: 'test',
 | 
						|
      },
 | 
						|
      config: [{ name: 'text', text: '测试输入' }],
 | 
						|
      visible: true,
 | 
						|
      action: jest.fn(() => ({ ret: -1 })),
 | 
						|
      title: '测试',
 | 
						|
    };
 | 
						|
    const wrapper = getWrapper(failProps);
 | 
						|
    const mockForm = {
 | 
						|
      resetForm: jest.fn(),
 | 
						|
      submitForm: jest.fn(() => 'test'),
 | 
						|
    };
 | 
						|
    wrapper.vm.form = mockForm;
 | 
						|
    wrapper.vm.save();
 | 
						|
  });
 | 
						|
 | 
						|
  it('保存活动-返回参数为空', async () => {
 | 
						|
    const failProps = {
 | 
						|
      values: {
 | 
						|
        text: 'test',
 | 
						|
      },
 | 
						|
      config: [{ name: 'text', text: '测试输入' }],
 | 
						|
      visible: true,
 | 
						|
      action: jest.fn(), // 返回为空
 | 
						|
      title: '测试',
 | 
						|
    };
 | 
						|
    const wrapper = getWrapper(failProps);
 | 
						|
    const mockForm = {
 | 
						|
      resetForm: jest.fn(),
 | 
						|
      submitForm: jest.fn(() => 'test'),
 | 
						|
    };
 | 
						|
    wrapper.vm.form = mockForm;
 | 
						|
    wrapper.vm.save();
 | 
						|
    await flushPromises();
 | 
						|
    expect(wrapper.emitted()).toHaveProperty('close');
 | 
						|
  });
 | 
						|
 | 
						|
  it('保存活动-表单内容为空', async () => {
 | 
						|
    const wrapper = getWrapper();
 | 
						|
    const mockForm = {
 | 
						|
      resetForm: jest.fn(),
 | 
						|
      submitForm: jest.fn(() => {}),
 | 
						|
    };
 | 
						|
    wrapper.vm.form = mockForm;
 | 
						|
    wrapper.vm.save();
 | 
						|
    await flushPromises();
 | 
						|
    expect(wrapper.emitted()).toHaveProperty('close');
 | 
						|
  });
 | 
						|
 | 
						|
  it('空参数测试', () => {
 | 
						|
    const wrapper = getWrapper({});
 | 
						|
    expect(wrapper.vm.$props).toEqual({
 | 
						|
      values: {},
 | 
						|
      config: [],
 | 
						|
      visible: false,
 | 
						|
      title: undefined,
 | 
						|
      action: undefined,
 | 
						|
    });
 | 
						|
  });
 | 
						|
});
 |