mirror of
https://github.com/apache/superset.git
synced 2026-04-21 17:14:57 +00:00
* Fix: https://github.com/apache/incubator-superset/issues/6590, also depends on https://github.com/apache-superset/superset-ui/pull/71 * Bumped version of superset-ui-connector * Added @babel/polyfill import * Reset mock history before each test, not after each test * Update CONTRIBUTING.md
48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
import React from 'react';
|
|
import { mount } from 'enzyme';
|
|
import thunk from 'redux-thunk';
|
|
import configureStore from 'redux-mock-store';
|
|
import fetchMock from 'fetch-mock';
|
|
import { Table } from 'reactable-arc';
|
|
|
|
import DashboardTable from '../../../src/welcome/DashboardTable';
|
|
import Loading from '../../../src/components/Loading';
|
|
|
|
// store needed for withToasts(TableLoader)
|
|
const mockStore = configureStore([thunk]);
|
|
const store = mockStore({});
|
|
|
|
const dashboardsEndpoint = 'glob:*/dashboardasync/api/read*';
|
|
const mockDashboards = [
|
|
{ id: 1, url: 'url', dashboard_title: 'title' },
|
|
];
|
|
|
|
fetchMock.get(dashboardsEndpoint, { result: mockDashboards });
|
|
|
|
function setup() {
|
|
// use mount because data fetching is triggered on mount
|
|
return mount(<DashboardTable />, { context: { store } });
|
|
}
|
|
|
|
describe('DashboardTable', () => {
|
|
beforeEach(fetchMock.resetHistory);
|
|
|
|
it('renders a Loading initially', () => {
|
|
const wrapper = setup();
|
|
expect(wrapper.find(Loading)).toHaveLength(1);
|
|
});
|
|
|
|
it('fetches dashboards and renders a Table', (done) => {
|
|
const wrapper = setup();
|
|
|
|
setTimeout(() => {
|
|
expect(fetchMock.calls(dashboardsEndpoint)).toHaveLength(1);
|
|
// there's a delay between response and updating state, so manually set it
|
|
// rather than adding a timeout which could introduce flakiness
|
|
wrapper.setState({ dashaboards: mockDashboards });
|
|
expect(wrapper.find(Table)).toHaveLength(1);
|
|
done();
|
|
});
|
|
});
|
|
});
|