@@ -11,6 +11,7 @@ import { testEpic } from './epicTestUtils';
1111import { applyFilterWidgetInteractionsEpic , cleanupAndReapplyFilterWidgetInteractionsEpic } from '../interactions' ;
1212import { applyFilterWidgetInteractions } from '../../actions/interactions' ;
1313import { UPDATE_PROPERTY , DELETE } from '../../actions/widgets' ;
14+ import { CHANGE_LAYER_PROPERTIES } from '../../actions/layers' ;
1415
1516const FILTER_ID = 'filter-1' ;
1617const FILTER_WIDGET_ID = 'filter-widget-1' ;
@@ -67,15 +68,21 @@ const makeTableWidget = (overrides = {}) => ({
6768 ...overrides
6869} ) ;
6970
70- const makeState = ( widgets ) => ( {
71- widgets : {
72- containers : {
73- floating : {
74- widgets
71+ const makeState = ( widgets , layersState = null ) => {
72+ const state = {
73+ widgets : {
74+ containers : {
75+ floating : {
76+ widgets
77+ }
7578 }
7679 }
80+ } ;
81+ if ( layersState ) {
82+ state . layers = layersState ;
7783 }
78- } ) ;
84+ return state ;
85+ } ;
7986
8087describe ( 'interactions epics' , ( ) => {
8188 describe ( 'applyFilterWidgetInteractionsEpic' , ( ) => {
@@ -109,6 +116,43 @@ describe('interactions epics', () => {
109116 ) ;
110117 } ) ;
111118
119+ it ( 'dispatches changeLayerProperties with full default layerFilter when layer has null layerFilter (map layer target)' , ( done ) => {
120+ const LAYER_ID = 'layer-1' ;
121+ const filterWidget = makeFilterWidget ( {
122+ interactions : [ {
123+ id : 'int-map-layer' ,
124+ plugged : true ,
125+ targetType : 'applyFilter' ,
126+ source : { nodePath : `widgets[${ FILTER_WIDGET_ID } ].filters[${ FILTER_ID } ]` } ,
127+ target : { nodePath : `map.layers[${ LAYER_ID } ]` }
128+ } ]
129+ } ) ;
130+ const layersState = { flat : [ { id : LAYER_ID , name : 'test:layer' } ] } ;
131+ const state = makeState ( [ filterWidget ] , layersState ) ;
132+
133+ testEpic (
134+ applyFilterWidgetInteractionsEpic ,
135+ 1 ,
136+ [ applyFilterWidgetInteractions ( FILTER_WIDGET_ID , 'floating' , FILTER_ID ) ] ,
137+ ( actions ) => {
138+ expect ( actions . length ) . toBe ( 1 ) ;
139+ expect ( actions [ 0 ] . type ) . toBe ( CHANGE_LAYER_PROPERTIES ) ;
140+ expect ( actions [ 0 ] . layer ) . toBe ( LAYER_ID ) ;
141+ const layerFilter = actions [ 0 ] . newProperties ?. layerFilter ;
142+ expect ( layerFilter ) . toBeTruthy ( ) ;
143+ expect ( Array . isArray ( layerFilter . groupFields ) ) . toBe ( true ) ;
144+ expect ( layerFilter . groupFields . length ) . toBeGreaterThan ( 0 ) ;
145+ expect ( Array . isArray ( layerFilter . filterFields ) ) . toBe ( true ) ;
146+ expect ( layerFilter . attributePanelExpanded ) . toBe ( true ) ;
147+ expect ( layerFilter . spatialField ) . toBeTruthy ( ) ;
148+ expect ( Array . isArray ( layerFilter . filters ) ) . toBe ( true ) ;
149+ expect ( layerFilter . filters . length ) . toBeGreaterThan ( 0 ) ;
150+ } ,
151+ state ,
152+ done
153+ ) ;
154+ } ) ;
155+
112156 it ( 'dispatches updateWidgetProperty with interactionFilters for table target' , ( done ) => {
113157 const filterWidget = makeFilterWidget ( {
114158 interactions : [ {
0 commit comments