Skip to content

Commit cd94abb

Browse files
authored
fix: preventing save button from flickering in SQL Lab (apache#25106)
1 parent 40ebc10 commit cd94abb

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

superset-frontend/src/SqlLab/components/SaveQuery/SaveQuery.test.tsx

+20-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { initialState, databases } from 'src/SqlLab/fixtures';
2727
const mockedProps = {
2828
queryEditorId: '123',
2929
animation: false,
30-
database: databases.result[0],
30+
database: { ...databases.result[0], allows_virtual_table_explore: false },
3131
onUpdate: () => {},
3232
onSave: () => {},
3333
saveQueryWarning: null,
@@ -61,6 +61,25 @@ const middlewares = [thunk];
6161
const mockStore = configureStore(middlewares);
6262

6363
describe('SavedQuery', () => {
64+
it('doesnt render save button when allows_virtual_table_explore is undefined', async () => {
65+
const noRenderProps = {
66+
...mockedProps,
67+
database: {
68+
...mockedProps.database,
69+
allows_virtual_table_explore: undefined,
70+
},
71+
};
72+
render(<SaveQuery {...noRenderProps} />, {
73+
useRedux: true,
74+
store: mockStore(mockState),
75+
});
76+
expect(() => {
77+
screen.getByRole('button', { name: /save/i });
78+
}).toThrow(
79+
'Unable to find an accessible element with the role "button" and name `/save/i`',
80+
);
81+
});
82+
6483
it('renders a non-split save button when allows_virtual_table_explore is not enabled', () => {
6584
render(<SaveQuery {...mockedProps} />, {
6685
useRedux: true,

superset-frontend/src/SqlLab/components/SaveQuery/index.tsx

+8-4
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ const SaveQuery = ({
9898
const [showSaveDatasetModal, setShowSaveDatasetModal] = useState(false);
9999
const isSaved = !!query.remoteId;
100100
const canExploreDatabase = !!database?.allows_virtual_table_explore;
101+
const shouldShowSaveButton =
102+
database?.allows_virtual_table_explore !== undefined;
101103

102104
const overlayMenu = (
103105
<Menu>
@@ -180,10 +182,12 @@ const SaveQuery = ({
180182

181183
return (
182184
<Styles className="SaveQuery">
183-
<SaveDatasetActionButton
184-
setShowSave={setShowSave}
185-
overlayMenu={canExploreDatabase ? overlayMenu : null}
186-
/>
185+
{shouldShowSaveButton && (
186+
<SaveDatasetActionButton
187+
setShowSave={setShowSave}
188+
overlayMenu={canExploreDatabase ? overlayMenu : null}
189+
/>
190+
)}
187191
<SaveDatasetModal
188192
visible={showSaveDatasetModal}
189193
onHide={() => setShowSaveDatasetModal(false)}

0 commit comments

Comments
 (0)