From 57c4d0f9a42d875d701e94044a5e0eee550d0ab7 Mon Sep 17 00:00:00 2001 From: maltoze Date: Tue, 15 Feb 2022 19:18:04 +0800 Subject: [PATCH] fix: passing url params in sqllab (#15246) * fix: passing url params in sqllab * avoid undefined serach and add test Co-authored-by: Ville Brofeldt --- .../src/SqlLab/actions/sqlLab.js | 3 +- .../src/SqlLab/actions/sqlLab.test.js | 30 +++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/superset-frontend/src/SqlLab/actions/sqlLab.js b/superset-frontend/src/SqlLab/actions/sqlLab.js index 9a2a976e8baf1..f89a6a8535df7 100644 --- a/superset-frontend/src/SqlLab/actions/sqlLab.js +++ b/superset-frontend/src/SqlLab/actions/sqlLab.js @@ -332,8 +332,9 @@ export function runQuery(query) { expand_data: true, }; + const search = window.location.search || ''; return SupersetClient.post({ - endpoint: '/superset/sql_json/', + endpoint: `/superset/sql_json/${search}`, body: JSON.stringify(postPayload), headers: { 'Content-Type': 'application/json' }, parseMethod: 'text', diff --git a/superset-frontend/src/SqlLab/actions/sqlLab.test.js b/superset-frontend/src/SqlLab/actions/sqlLab.test.js index 49b523a683b83..7e1326336f351 100644 --- a/superset-frontend/src/SqlLab/actions/sqlLab.test.js +++ b/superset-frontend/src/SqlLab/actions/sqlLab.test.js @@ -56,7 +56,7 @@ describe('async actions', () => { JSON.stringify({ data: mockBigNumber, query: { sqlEditorId: 'dfsadfs' } }), ); - const runQueryEndpoint = 'glob:*/superset/sql_json/*'; + const runQueryEndpoint = 'glob:*/superset/sql_json/'; fetchMock.post(runQueryEndpoint, `{ "data": ${mockBigNumber} }`); describe('saveQuery', () => { @@ -188,7 +188,7 @@ describe('async actions', () => { }); }); - describe('runQuery', () => { + describe('runQuery without query params', () => { const makeRequest = () => { const request = actions.runQuery(query); return request(dispatch); @@ -250,6 +250,32 @@ describe('async actions', () => { }); }); + describe('runQuery with query params', () => { + const { location } = window; + + beforeAll(() => { + delete window.location; + window.location = new URL('http://localhost/sqllab/?foo=bar'); + }); + + afterAll(() => { + delete window.location; + window.location = location; + }); + + const makeRequest = () => { + const request = actions.runQuery(query); + return request(dispatch); + }; + + it('makes the fetch request', () => + makeRequest().then(() => { + expect( + fetchMock.calls('glob:*/superset/sql_json/?foo=bar'), + ).toHaveLength(1); + })); + }); + describe('reRunQuery', () => { let stub; beforeEach(() => {