mirror of
https://github.com/apache/superset.git
synced 2026-06-08 17:19:20 +00:00
* Enable "Clone to New Tab" btn in QueryHistoryTable Method #1; doesn't feel very clean. Going to attempt to reimplement using an action and changing state directly through the reducer rather than creating a new QueryEditor object directly from the QueryTable * Move Clone Logic to Action * Implement PR feedback * Clean up reducer action; fix bug Bug => Attempting to clone anything other than the most recent Query for a given TabbedQueryEditor would throw an exception, because we depended on lastQueryId to find the title of the QueryEditor to clone. Since you can only activate a clone from the currently active tab, we can instead fetch the ID of the Editor to copy the Title of from the tip of tabHistory. * Tests for Reducer Action * Fix CodeClimate feedback
29 lines
1.0 KiB
JavaScript
29 lines
1.0 KiB
JavaScript
import * as r from '../../../javascripts/SqlLab/reducers';
|
|
import * as actions from '../../../javascripts/SqlLab/actions';
|
|
import { describe, it } from 'mocha';
|
|
import { expect } from 'chai';
|
|
|
|
describe('sqlLabReducer', () => {
|
|
describe('CLONE_QUERY_TO_NEW_TAB', () => {
|
|
const testQuery = { sql: 'SELECT * FROM...', dbId: 1, id: 1 };
|
|
const state = Object.assign(r.initialState, { queries: [testQuery] });
|
|
const newState = r.sqlLabReducer(state, actions.cloneQueryToNewTab(testQuery));
|
|
|
|
it('should have at most one more tab', () => {
|
|
expect(newState.queryEditors).have.length(2);
|
|
});
|
|
|
|
it('should have the same SQL as the cloned query', () => {
|
|
expect(newState.queryEditors[1].sql).to.equal(testQuery.sql);
|
|
});
|
|
|
|
it('should prefix the new tab title with "Copy of"', () => {
|
|
expect(newState.queryEditors[1].title).to.include('Copy of');
|
|
});
|
|
|
|
it('should push the cloned tab onto tab history stack', () => {
|
|
expect(newState.tabHistory[1]).to.eq(newState.queryEditors[1].id);
|
|
});
|
|
});
|
|
});
|