@@ -399,6 +399,82 @@ test('#composerStateReducer - addDataToMapUpdater: autoCreateLayers', t => {
399399 t . end ( ) ;
400400} ) ;
401401
402+ test ( '#composerStateReducer - addDataToMapUpdater: layerVisConfig only affects new datasets; unknown keys ignored' , t => {
403+ const data = processCsvData ( testCsvData ) ;
404+ const state = keplerGlReducer ( { } , registerEntry ( { id : 'test' } ) ) . test ;
405+
406+ let oldState = addDataToMapUpdater ( state , {
407+ payload : {
408+ datasets : {
409+ data,
410+ info : { id : 'first-csv-dataset' }
411+ }
412+ }
413+ } ) ;
414+ oldState = {
415+ ...oldState ,
416+ visState : applyExistingDatasetTasks ( visStateReducer , oldState . visState )
417+ } ;
418+ drainTasksForTesting ( ) ;
419+
420+ const firstLayer = oldState . visState . layers . find ( l => l . config . dataId === 'first-csv-dataset' ) ;
421+ t . ok ( firstLayer , 'first dataset should have a layer' ) ;
422+ const allowHoverFirstBefore = firstLayer . config . visConfig . allowHover ;
423+
424+ let nextState = addDataToMapUpdater ( oldState , {
425+ payload : {
426+ datasets : {
427+ data,
428+ info : { id : 'second-csv-dataset' }
429+ } ,
430+ options : {
431+ keepExistingConfig : true ,
432+ layerVisConfig : {
433+ allowHover : false ,
434+ opacity : undefined ,
435+ totallyUnknownVisKey999 : 'strip-me'
436+ }
437+ }
438+ }
439+ } ) ;
440+ nextState = {
441+ ...nextState ,
442+ visState : applyExistingDatasetTasks ( visStateReducer , nextState . visState )
443+ } ;
444+ drainTasksForTesting ( ) ;
445+
446+ const layerFirst = nextState . visState . layers . find ( l => l . config . dataId === 'first-csv-dataset' ) ;
447+ const layerSecond = nextState . visState . layers . find ( l => l . config . dataId === 'second-csv-dataset' ) ;
448+
449+ t . ok ( layerSecond , 'second dataset should have a layer' ) ;
450+ t . equal (
451+ layerFirst . config . visConfig . allowHover ,
452+ allowHoverFirstBefore ,
453+ 'layerVisConfig must not change visConfig for layers tied to prior datasets'
454+ ) ;
455+ t . equal (
456+ layerSecond . config . visConfig . allowHover ,
457+ false ,
458+ 'layerVisConfig should merge allowHover onto layers for datasets added in this action'
459+ ) ;
460+ t . equal (
461+ layerFirst . config . visConfig . totallyUnknownVisKey999 ,
462+ undefined ,
463+ 'unknown keys must not be applied to existing layers'
464+ ) ;
465+ t . equal (
466+ layerSecond . config . visConfig . totallyUnknownVisKey999 ,
467+ undefined ,
468+ 'unknown keys must not be merged into visConfig when absent from visConfigSettings'
469+ ) ;
470+ t . ok (
471+ typeof layerSecond . config . visConfig . opacity === 'number' ,
472+ 'undefined patch values must not overwrite visConfig (e.g. opacity)'
473+ ) ;
474+
475+ t . end ( ) ;
476+ } ) ;
477+
402478test ( '#composerStateReducer - replaceDataInMapUpdater' , t => {
403479 const dataIdToReplace = 'dataset_to_replace' ;
404480 const datasets = {
0 commit comments