feat: Better return messages in SQL Editor (#14381)

* Sqllab limit

* Add migration script

* Set default values

* initial push

* revisions

* moving migration to separate PR

* revisions

* Fix apply_limit_to_sql

* all but tests

* added unit tests

* result set

* first draft

* revisions

* made user required prop, added it to all places ResultSet is imported

* changed QueryTable test to allow for useSelector

* Query Table working

* working with heights

* fixed scrolling

* got rid of animated

* fixed tests, revisions

* revisions

* revisions

* heights

* fun with heights

* alert state

* aaron helped me fix this

* better alert messages

* fixed result set test

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
This commit is contained in:
AAfghahi
2021-05-18 14:02:06 -04:00
committed by GitHub
parent 5776dcb61a
commit a7a011cce5
12 changed files with 202 additions and 46 deletions

View File

@@ -26,9 +26,12 @@ import { supersetTheme, ThemeProvider } from '@superset-ui/core';
import { fireEvent, render, screen, act } from '@testing-library/react';
import '@testing-library/jest-dom/extend-expect';
import userEvent from '@testing-library/user-event';
import { user } from './fixtures';
const mockStore = configureStore([thunk]);
const store = mockStore({});
const store = mockStore({
sqlLab: user,
});
const SEARCH_ENDPOINT = 'glob:*/superset/search_queries?*';
const USER_ENDPOINT = 'glob:*/api/v1/query/related/user';

View File

@@ -17,11 +17,14 @@
* under the License.
*/
import React from 'react';
import { shallow } from 'enzyme';
import thunk from 'redux-thunk';
import configureStore from 'redux-mock-store';
import { styledMount as mount } from 'spec/helpers/theming';
import QueryTable from 'src/SqlLab/components/QueryTable';
import TableView from 'src/components/TableView';
import { TableCollection } from 'src/components/dataViewCommon';
import { queries } from './fixtures';
import { Provider } from 'react-redux';
import { queries, user } from './fixtures';
describe('QueryTable', () => {
const mockedProps = {
@@ -35,12 +38,18 @@ describe('QueryTable', () => {
expect(React.isValidElement(<QueryTable {...mockedProps} />)).toBe(true);
});
it('renders a proper table', () => {
const wrapper = shallow(<QueryTable {...mockedProps} />);
const tableWrapper = wrapper
.find(TableView)
.shallow()
.find(TableCollection)
.shallow();
const mockStore = configureStore([thunk]);
const store = mockStore({
sqlLab: user,
});
const wrapper = mount(
<Provider store={store}>
<QueryTable {...mockedProps} />
</Provider>,
);
const tableWrapper = wrapper.find(TableView).find(TableCollection);
expect(wrapper.find(TableView)).toExist();
expect(tableWrapper.find('table')).toExist();
expect(tableWrapper.find('table').find('thead').find('tr')).toHaveLength(1);

View File

@@ -37,6 +37,7 @@ import {
runningQuery,
stoppedQuery,
initialState,
user,
} from './fixtures';
const mockStore = configureStore([thunk]);
@@ -54,8 +55,10 @@ describe('ResultSet', () => {
},
cache: true,
query: queries[0],
height: 0,
height: 140,
database: { allows_virtual_table_explore: true },
user,
defaultQueryLimit: 1000,
};
const stoppedQueryProps = { ...mockedProps, query: stoppedQuery };
const runningQueryProps = { ...mockedProps, query: runningQuery };

View File

@@ -208,6 +208,7 @@ export const queries = [
executedSql: null,
changed_on: '2016-10-19T20:56:06',
rows: 42,
queryLimit: 100,
endDttm: 1476910566798,
limit_reached: false,
schema: 'test_schema',
@@ -461,6 +462,18 @@ export const runningQuery = {
};
export const cachedQuery = { ...queries[0], cached: true };
export const user = {
createdOn: '2021-04-27T18:12:38.952304',
email: 'admin',
firstName: 'admin',
isActive: true,
lastName: 'admin',
permissions: {},
roles: { Admin: Array(173) },
userId: 1,
username: 'admin',
};
export const initialState = {
sqlLab: {
offline: false,
@@ -473,6 +486,7 @@ export const initialState = {
workspaceQueries: [],
queriesLastUpdate: 0,
activeSouthPaneTab: 'Results',
user: { user },
},
messageToasts: [],
common: {