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();
});