61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
import { afterEach, describe, expect, it } from 'vitest';
|
||
import { mount } from '@vue/test-utils';
|
||
import TransForm from '../src/TransForm.vue';
|
||
import { resetConfig, setConfig } from '../src/config.js';
|
||
|
||
// 每个用例后恢复全局配置,避免 setConfig 污染其它用例
|
||
afterEach(() => {
|
||
resetConfig();
|
||
});
|
||
|
||
describe('TransForm 操作符下拉(默认 query-option)', () => {
|
||
it('无 query-option 的字段渲染默认操作符列表(12 项,第一项 EQ)', () => {
|
||
const wrapper = mount(TransForm, {
|
||
props: { schema: [{ row: 12, field: 'name', 'field-name': '名称' }] },
|
||
});
|
||
const opts = wrapper.find('select').findAll('option');
|
||
expect(opts).toHaveLength(12);
|
||
expect(opts[0].text()).toBe('=');
|
||
expect(opts[0].attributes('value')).toBe('EQ');
|
||
expect(opts[11].text()).toBe('IS NOT NULL');
|
||
});
|
||
|
||
it('有 query-option 的字段仍渲染 schema 自己的选项(不被默认覆盖)', () => {
|
||
const wrapper = mount(TransForm, {
|
||
props: {
|
||
schema: [
|
||
{
|
||
row: 12,
|
||
field: 'status',
|
||
'field-name': '状态',
|
||
'query-option': [{ value: 'NE', label: '≠' }],
|
||
},
|
||
],
|
||
},
|
||
});
|
||
const opts = wrapper.find('select').findAll('option');
|
||
expect(opts).toHaveLength(1);
|
||
expect(opts[0].text()).toBe('≠');
|
||
expect(opts[0].attributes('value')).toBe('NE');
|
||
});
|
||
|
||
it('setConfig 自定义 queryOption 后,无 query-option 字段的下拉随之更新', () => {
|
||
setConfig({ queryOption: [{ value: 'GT', label: '>' }] });
|
||
const wrapper = mount(TransForm, {
|
||
props: { schema: [{ row: 12, field: 'age', 'field-name': '年龄' }] },
|
||
});
|
||
const opts = wrapper.find('select').findAll('option');
|
||
expect(opts).toHaveLength(1);
|
||
expect(opts[0].text()).toBe('>');
|
||
});
|
||
|
||
it('有 query-component 但无 query-option 的字段不套默认下拉(操作符由组件自己管理)', () => {
|
||
const wrapper = mount(TransForm, {
|
||
props: {
|
||
schema: [{ row: 12, field: 'custom', 'query-component': 'CustomQuery' }],
|
||
},
|
||
});
|
||
expect(wrapper.find('select').findAll('option')).toHaveLength(0);
|
||
});
|
||
});
|