fix(sqllab): rendering performance regression (#23653)

This commit is contained in:
JUST.in DO IT
2023-04-11 16:19:18 -07:00
committed by GitHub
parent 983acf7103
commit a5b6ccc1ec
2 changed files with 33 additions and 8 deletions

View File

@@ -25,6 +25,7 @@ import thunk from 'redux-thunk';
import configureStore from 'redux-mock-store';
import fetchMock from 'fetch-mock';
import {
SET_QUERY_EDITOR_SQL_DEBOUNCE_MS,
SQL_EDITOR_GUTTER_HEIGHT,
SQL_EDITOR_GUTTER_MARGIN,
SQL_TOOLBAR_HEIGHT,
@@ -43,8 +44,14 @@ import {
jest.mock('src/components/AsyncAceEditor', () => ({
...jest.requireActual('src/components/AsyncAceEditor'),
FullSQLEditor: props => (
<div data-test="react-ace">{JSON.stringify(props)}</div>
FullSQLEditor: ({ onChange, onBlur, value }) => (
<textarea
data-test="react-ace"
onChange={evt => onChange(evt.target.value)}
onBlur={onBlur}
>
{value}
</textarea>
),
}));
jest.mock('src/SqlLab/components/SqlEditorLeftBar', () => () => (
@@ -166,10 +173,8 @@ describe('SqlEditor', () => {
},
}),
);
expect(await findByTestId('react-ace')).toHaveTextContent(
JSON.stringify({ value: expectedSql }).slice(1, -1),
);
const editor = await findByTestId('react-ace');
expect(editor).toHaveValue(expectedSql);
});
it('render a SouthPane', async () => {
@@ -179,6 +184,28 @@ describe('SqlEditor', () => {
).toBeInTheDocument();
});
it('triggers setQueryEditorAndSaveSql with debounced call to avoid performance regression', async () => {
const { findByTestId } = setup(mockedProps, store);
const editor = await findByTestId('react-ace');
const sql = 'select *';
fireEvent.change(editor, { target: { value: sql } });
// Verify no immediate sql update triggered
expect(
store.getActions().filter(({ type }) => type === 'QUERY_EDITOR_SET_SQL'),
).toHaveLength(0);
await waitFor(
() =>
expect(
store
.getActions()
.filter(({ type }) => type === 'QUERY_EDITOR_SET_SQL'),
).toHaveLength(1),
{
timeout: SET_QUERY_EDITOR_SQL_DEBOUNCE_MS + 100,
},
);
});
it('runs query action with ctas false', async () => {
const expectedStore = mockStore({
...initialState,