@testing-library/react#queryByDisplayValue TypeScript Examples
The following examples show how to use
@testing-library/react#queryByDisplayValue.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: UMLEditor.test.tsx From legend-studio with Apache License 2.0 | 5 votes |
test(integrationTest('Association editor'), async () => {
await TEST__openElementFromExplorerTree('ui::TestAssociation', renderResult);
const editPanelHeader = renderResult.getByTestId(
LEGEND_STUDIO_TEST_ID.EDIT_PANEL__HEADER_TABS,
);
expect(getByText(editPanelHeader, 'TestAssociation')).not.toBeNull();
const associationEditor = renderResult.getByTestId(
LEGEND_STUDIO_TEST_ID.ASSOCIATION_EDITOR,
);
const properties = ['testClassProp', 'testClassSibling'];
// input fields for association property name are present
properties.forEach((t) =>
expect(getByDisplayValue(associationEditor, t)).not.toBeNull(),
);
// Tagged Values
fireEvent.click(getByText(associationEditor, 'Tagged Values'));
await waitFor(() => getByText(associationEditor, 'ProfileTest'));
getByDisplayValue(associationEditor, 'Association Tag');
// Steretypes
fireEvent.click(getByText(associationEditor, 'Stereotypes'));
await waitFor(() => getByText(associationEditor, 'stereotype2'));
// Back to properties
fireEvent.click(getByText(associationEditor, 'Properties'));
await waitFor(() => getByDisplayValue(associationEditor, 'testClassProp'));
const inputA = getByDisplayValue(associationEditor, 'testClassProp');
const propertyTypeA = inputA.parentElement?.parentElement
?.parentElement as HTMLElement;
fireEvent.change(inputA, { target: { value: 'random' } });
await waitFor(() => getByDisplayValue(associationEditor, 'random'));
expect(getAllByDisplayValue(propertyTypeA, '1')).toHaveLength(2);
expect(getByText(propertyTypeA, 'TestClass')).not.toBeNull();
expect(getAllByRole(propertyTypeA, 'button')).toHaveLength(2);
// sub panel property
const inputB = getByDisplayValue(associationEditor, 'testClassSibling');
const propertyTypeB = inputB.parentElement?.parentElement
?.parentElement as HTMLElement;
const buttons = getAllByRole(propertyTypeB, 'button');
expect(buttons).toHaveLength(2);
expect(queryByDisplayValue(associationEditor, 'ProfileTest')).toBeNull();
fireEvent.click(guaranteeNonNullable(buttons[1])); // navigate
const subPropertyPanel = getByTestId(
associationEditor,
LEGEND_STUDIO_TEST_ID.PANEL,
);
getByDisplayValue(subPropertyPanel, 'association tag');
fireEvent.click(getByText(subPropertyPanel, 'Stereotypes'));
await waitFor(() => getByText(subPropertyPanel, 'stereotype1'));
fireEvent.click(
guaranteeNonNullable(queryAllByRole(subPropertyPanel, 'button')[0]),
);
});
Example #2
Source File: UMLEditor.test.tsx From legend-studio with Apache License 2.0 | 4 votes |
test(
integrationTest('Class editor without constraints and derived properties'),
async () => {
await TEST__openElementFromExplorerTree('ui::TestClass', renderResult);
const editPanelHeader = renderResult.getByTestId(
LEGEND_STUDIO_TEST_ID.EDIT_PANEL__HEADER_TABS,
);
expect(getByText(editPanelHeader, 'TestClass')).not.toBeNull();
const classForm = renderResult.getByTestId(
LEGEND_STUDIO_TEST_ID.CLASS_FORM_EDITOR,
);
// Normal properties
const classProperties = ['a', 'b', 'name', 'person'];
classProperties.forEach((t) =>
expect(getByDisplayValue(classForm, t)).not.toBeNull(),
);
// Supertype propertes
const superTypeProperties = [
'legs',
'arms',
'planet',
'description',
'founder',
];
superTypeProperties.forEach((superTypeProperty) => {
// input fields for super type property name are not present/disabled
expect(queryByDisplayValue(classForm, superTypeProperty)).toBeNull();
expect(queryByText(classForm, superTypeProperty)).not.toBeNull();
});
// Association properties
const associationProperties = ['testClassSibling'];
associationProperties.forEach((associationProperty) => {
// input fields for association property name are not present/disabled
expect(queryByDisplayValue(classForm, associationProperty)).toBeNull();
expect(queryByText(classForm, associationProperty)).not.toBeNull();
});
// SuperTypes
fireEvent.click(getByText(classForm, 'Super Types'));
await waitFor(() => getByText(classForm, 'Animal'));
// TaggedValues
fireEvent.click(getByText(classForm, 'Tagged Values'));
await waitFor(() => getByText(classForm, 'ProfileTest'));
expect(getByText(classForm, 'tag1')).not.toBeNull();
expect(getByDisplayValue(classForm, 'test')).not.toBeNull();
// Stereotypes
fireEvent.click(getByText(classForm, 'Stereotypes'));
await waitFor(() => getByText(classForm, 'ProfileTest'));
expect(getByText(classForm, 'stereotype1')).not.toBeNull();
// Back to properties. Test more rigorous
fireEvent.click(getByText(classForm, 'Properties'));
await waitFor(() => getByText(classForm, 'founder'));
const inputA = getByDisplayValue(classForm, 'a');
const propertyA = inputA.parentElement?.parentElement
?.parentElement as HTMLElement;
fireEvent.change(inputA, { target: { value: 'abcdefg' } });
await waitFor(() => getByDisplayValue(classForm, 'abcdefg'));
expect(getAllByDisplayValue(propertyA, '1')).toHaveLength(2);
expect(getByText(propertyA, 'String')).not.toBeNull();
expect(getAllByRole(propertyA, 'button')).toHaveLength(2);
fireEvent.click(guaranteeNonNullable(getAllByRole(propertyA, 'button')[1]));
expect(queryByDisplayValue(classForm, 'abcdefg')).toBeNull();
// Sub Panel Property
const inputB = getByDisplayValue(classForm, 'b');
const propertyB = inputB.parentElement?.parentElement
?.parentElement as HTMLElement;
const buttons = getAllByRole(propertyB, 'button');
expect(buttons).toHaveLength(2);
expect(queryByDisplayValue(classForm, 'ProfileTest')).toBeNull();
const navigateToPropertyButton = guaranteeNonNullable(buttons[0]);
fireEvent.click(navigateToPropertyButton);
await waitFor(() => getByText(classForm, 'property'));
const subPropertyPanel = getByTestId(
classForm,
LEGEND_STUDIO_TEST_ID.PANEL,
);
expect(
getByDisplayValue(subPropertyPanel, 'lets write a tag'),
).not.toBeNull();
expect(getAllByText(subPropertyPanel, 'tag2')).not.toBeNull();
expect(getByText(subPropertyPanel, 'ProfileTest')).not.toBeNull();
fireEvent.click(getByText(subPropertyPanel, 'Stereotypes'));
await waitFor(() => getByText(subPropertyPanel, 'stereotype1'));
fireEvent.click(
guaranteeNonNullable(getAllByRole(subPropertyPanel, 'button')[0]),
);
expect(queryByRole(classForm, 'panel')).toBeNull();
},
);