123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- import { render, EventSourceMock, WithRoute } from 'lib/testHelpers';
- import React from 'react';
- import Query, {
- getFormattedErrorFromTableData,
- } from 'components/KsqlDb/Query/Query';
- import { screen } from '@testing-library/dom';
- import fetchMock from 'fetch-mock';
- import { clusterKsqlDbQueryPath } from 'lib/paths';
- import userEvent from '@testing-library/user-event';
- const clusterName = 'testLocal';
- const renderComponent = () =>
- render(
- <WithRoute path={clusterKsqlDbQueryPath()}>
- <Query />
- </WithRoute>,
- {
- initialEntries: [clusterKsqlDbQueryPath(clusterName)],
- }
- );
- describe('Query', () => {
- it('renders', () => {
- renderComponent();
- expect(screen.getByLabelText('KSQL')).toBeInTheDocument();
- expect(screen.getByLabelText('Stream properties:')).toBeInTheDocument();
- });
- afterEach(() => fetchMock.reset());
- it('fetch on execute', async () => {
- renderComponent();
- const mock = fetchMock.postOnce(`/api/clusters/${clusterName}/ksql/v2`, {
- pipeId: 'testPipeID',
- });
- Object.defineProperty(window, 'EventSource', {
- value: EventSourceMock,
- });
- const inputs = screen.getAllByRole('textbox');
- const textAreaElement = inputs[0] as HTMLTextAreaElement;
- textAreaElement.focus();
- await userEvent.paste('show tables;');
- await userEvent.click(screen.getByRole('button', { name: 'Execute' }));
- expect(mock.calls().length).toBe(1);
- });
- it('fetch on execute with streamParams', async () => {
- renderComponent();
- const mock = fetchMock.postOnce(`/api/clusters/${clusterName}/ksql/v2`, {
- pipeId: 'testPipeID',
- });
- Object.defineProperty(window, 'EventSource', {
- value: EventSourceMock,
- });
- const inputs = screen.getAllByRole('textbox');
- const textAreaElement = inputs[0] as HTMLTextAreaElement;
- textAreaElement.focus();
- await userEvent.paste('show tables;');
- const key = screen.getByLabelText('key');
- key.focus();
- await userEvent.paste('key');
- const value = screen.getByLabelText('value');
- value.focus();
- await userEvent.paste('value');
- await userEvent.click(screen.getByRole('button', { name: 'Execute' }));
- expect(mock.calls().length).toBe(1);
- });
- });
- describe('getFormattedErrorFromTableData', () => {
- it('works', () => {
- expect(getFormattedErrorFromTableData([['Test Error']])).toStrictEqual({
- title: 'Test Error',
- message: '',
- });
- expect(
- getFormattedErrorFromTableData([
- ['some_type', 'errorCode', 'messageText'],
- ])
- ).toStrictEqual({
- title: '[Error #errorCode] some_type',
- message: 'messageText',
- });
- expect(
- getFormattedErrorFromTableData([
- [
- 'some_type',
- 'errorCode',
- 'messageText',
- 'statementText',
- ['test1', 'test2'],
- ],
- ])
- ).toStrictEqual({
- title: '[Error #errorCode] some_type',
- message: '[test1, test2] "statementText" messageText',
- });
- expect(getFormattedErrorFromTableData([])).toStrictEqual({
- title: 'Unknown error',
- message: 'Recieved empty response',
- });
- });
- });
|