diff --git a/src/plugins/local/selectors/__tests__/localSelectorsTest.js b/src/plugins/local/selectors/__tests__/localSelectorsTest.js index 28b84b12..51978194 100644 --- a/src/plugins/local/selectors/__tests__/localSelectorsTest.js +++ b/src/plugins/local/selectors/__tests__/localSelectorsTest.js @@ -249,12 +249,34 @@ test('filteredDataSelector filters data respecting filterable', test => { name: { filterable: false, }, + weapon: { + filterable: true, + } + } + }, + filter: 'H', + data: [ + { id: '1', name: 'luke skywalker', weapon: 'light saber' }, + { id: '2', name: 'han solo', weapon: 'blaster' }, + ] + }); + + test.deepEqual(selectors.filteredDataSelector(state).toJSON(), [ + { id: '1', name: 'luke skywalker', weapon: 'light saber' } + ]); +}); + +test('filteredDataSelector matches ColumnDefinition fields only', test => { + const state = new Immutable.fromJS({ + renderProperties: { + columnProperties: { + weapon: null, } }, filter: 'H', data: [ { id: '1', name: 'luke skywalker', weapon: 'light saber' }, - { id: '2', name: 'han solo', weapon: 'blaster' } + { id: '2', name: 'han solo', weapon: 'blaster' }, ] }); @@ -263,6 +285,18 @@ test('filteredDataSelector filters data respecting filterable', test => { ]); }); +test('filteredDataSelector ignores griddleKey matches', test => { + const state = new Immutable.fromJS({ + filter: '1', + data: [ + { griddleKey: '11', name: 'luke skywalker' }, + { griddleKey: '12', name: 'han solo' } + ] + }); + + test.deepEqual(selectors.filteredDataSelector(state).toJSON(), []); +}); + test('sortedDataSelector uses default sort if no sort method specifed for column', test => { const state = new Immutable.fromJS({ data: [ diff --git a/src/plugins/local/selectors/localSelectors.js b/src/plugins/local/selectors/localSelectors.js index be77f0d5..41d9e35b 100644 --- a/src/plugins/local/selectors/localSelectors.js +++ b/src/plugins/local/selectors/localSelectors.js @@ -52,9 +52,13 @@ export const filteredDataSelector = createSelector( return data.filter(row => row.keySeq() .some((key) => { - const filterable = columnProperties && columnProperties.getIn([key, 'filterable']); - if (filterable === false) { + if (key === 'griddleKey') { return false; + } else if (columnProperties) { + if (columnProperties.get(key) === undefined || + columnProperties.getIn([key, 'filterable']) === false) { + return false; + } } const value = row.get(key); return value &&