@@ -21,6 +21,10 @@ import { VizType } from '@superset-ui/core';
2121import { hydrateExplore , HYDRATE_EXPLORE } from './hydrateExplore' ;
2222import { exploreInitialData } from '../fixtures' ;
2323
24+ afterEach ( ( ) => {
25+ window . history . pushState ( { } , '' , '/' ) ;
26+ } ) ;
27+
2428test ( 'creates hydrate action from initial data' , ( ) => {
2529 const dispatch = jest . fn ( ) ;
2630 const getState = jest . fn ( ( ) => ( {
@@ -168,6 +172,84 @@ test('creates hydrate action with existing state', () => {
168172 ) ;
169173} ) ;
170174
175+ test ( 'hydrates sliceName from preview form data before saved slice name' , ( ) => {
176+ window . history . pushState ( { } , '' , '/explore/?form_data_key=preview-key' ) ;
177+
178+ const dispatch = jest . fn ( ) ;
179+ const getState = jest . fn ( ( ) => ( {
180+ user : { } ,
181+ charts : { } ,
182+ datasources : { } ,
183+ common : { } ,
184+ explore : { } ,
185+ } ) ) ;
186+ const previewSliceName = 'RENAMED - Bug Evidence' ;
187+ const savedSliceName = 'Most Populated Countries' ;
188+ const previewInitialData = {
189+ ...exploreInitialData ,
190+ form_data : {
191+ ...exploreInitialData . form_data ,
192+ slice_name : previewSliceName ,
193+ } ,
194+ slice : {
195+ ...exploreInitialData . slice ! ,
196+ slice_name : savedSliceName ,
197+ } ,
198+ } ;
199+
200+ // @ts -expect-error we only need the fields consumed by hydrateExplore
201+ hydrateExplore ( previewInitialData ) ( dispatch , getState ) ;
202+
203+ expect ( dispatch ) . toHaveBeenCalledWith (
204+ expect . objectContaining ( {
205+ type : HYDRATE_EXPLORE ,
206+ data : expect . objectContaining ( {
207+ explore : expect . objectContaining ( {
208+ sliceName : previewSliceName ,
209+ } ) ,
210+ } ) ,
211+ } ) ,
212+ ) ;
213+ } ) ;
214+
215+ test ( 'hydrates sliceName from saved slice when regular form data has stale name' , ( ) => {
216+ const dispatch = jest . fn ( ) ;
217+ const getState = jest . fn ( ( ) => ( {
218+ user : { } ,
219+ charts : { } ,
220+ datasources : { } ,
221+ common : { } ,
222+ explore : { } ,
223+ } ) ) ;
224+ const staleFormDataSliceName = 'Stale Params Name' ;
225+ const savedSliceName = 'Current Saved Name' ;
226+ const savedChartInitialData = {
227+ ...exploreInitialData ,
228+ form_data : {
229+ ...exploreInitialData . form_data ,
230+ slice_name : staleFormDataSliceName ,
231+ } ,
232+ slice : {
233+ ...exploreInitialData . slice ! ,
234+ slice_name : savedSliceName ,
235+ } ,
236+ } ;
237+
238+ // @ts -expect-error we only need the fields consumed by hydrateExplore
239+ hydrateExplore ( savedChartInitialData ) ( dispatch , getState ) ;
240+
241+ expect ( dispatch ) . toHaveBeenCalledWith (
242+ expect . objectContaining ( {
243+ type : HYDRATE_EXPLORE ,
244+ data : expect . objectContaining ( {
245+ explore : expect . objectContaining ( {
246+ sliceName : savedSliceName ,
247+ } ) ,
248+ } ) ,
249+ } ) ,
250+ ) ;
251+ } ) ;
252+
171253test ( 'uses configured default time range if not set' , ( ) => {
172254 const dispatch = jest . fn ( ) ;
173255 const getState = jest . fn ( ( ) => ( {
0 commit comments