import React from "react"; import { render, screen } from "test/testUtils"; import DynamicTextFieldControl from "./DynamicTextFieldControl"; import { reduxForm } from "redux-form"; import { mockCodemirrorRender } from "test/__mocks__/CodeMirrorEditorMock"; import { PluginType } from "entities/Action"; import { waitFor } from "@testing-library/dom"; import userEvent from "@testing-library/user-event"; import { EvaluationSubstitutionType } from "entities/DataTree/dataTreeFactory"; import { DatasourceComponentTypes, UIComponentTypes } from "api/PluginApi"; function TestForm(props: any) { return
{props.children}
; } const ReduxFormDecorator = reduxForm({ form: "TestForm", initialValues: { name: "TestAction", datasource: { pluginId: "123" } }, })(TestForm); describe("DynamicTextFieldControl", () => { beforeEach(() => { mockCodemirrorRender(); }); it("renders template menu correctly", () => { render( , { url: "/?showTemplate=true", initialState: { entities: { // @ts-expect-error: Types are not available plugins: { list: [ { id: "123", name: "testPlugin", type: PluginType.DB, packageName: "DB", templates: { CREATE: "test plugin template", }, uiComponent: UIComponentTypes.DbEditorForm, datasourceComponent: DatasourceComponentTypes.AutoForm, }, ], }, }, }, }, ); const createTemplateButton = screen.getByText("Create"); userEvent.click(createTemplateButton); // Test each word separately because they are in different spans expect(screen.getByText("test")).toBeDefined(); expect(screen.getByText("plugin")).toBeDefined(); expect(screen.getByText("template")).toBeDefined(); waitFor(async () => { await expect(screen.findByText("Create")).toBeNull(); }); }); });