amis/__tests__/renderers/Form/service.test.tsx

73 lines
1.9 KiB
TypeScript

import React = require('react');
import {render, cleanup} from 'react-testing-library';
import '../../../src/themes/default';
import {
render as amisRender
} from '../../../src/index';
import {makeEnv, wait} from '../../helper';
import { clearStoresCache } from '../../../src/factory';
afterEach(() => {
cleanup();
clearStoresCache();
});
test('Renderer:service', async () => {
const fetcher = jest.fn().mockImplementation(() => Promise.resolve({
data: {
status: 0,
msg: 'ok',
data: {
controls: [
{type: "text", label: "动态字段1", name: "dy_1", required: true},
{type: "text", label: "动态字段2", name: "dy_2"}
]
}
}
}));
const {
container
} = render(amisRender({
type: 'form',
title: 'The form',
controls: [
{
name: 'tpl',
type: 'select',
label: '模板',
inline: true,
required: true,
value: 'tpl1',
options: [
{
label: '模板1',
value: 'tpl1'
},
{
label: '模板2',
value: 'tpl2'
},
{
label: '模板3',
value: 'tpl3'
}
]
},
{
type: 'service',
className: 'm-t',
initFetchSchemaOn: 'data.tpl',
schemaApi: 'https://houtai.baidu.com/api/mock2/service/form?tpl=$tpl'
}
],
submitText: null,
actions: []
}, {}, makeEnv({
fetcher
})));
await wait(100);
expect(fetcher).toHaveBeenCalled();
expect(container).toMatchSnapshot();
});