From 694bd715f29583171265455e6bbefc285e0b2320 Mon Sep 17 00:00:00 2001 From: AParks Date: Wed, 14 Mar 2018 09:05:05 +1100 Subject: [PATCH] fix null matching on objects with null id - record with value '{id: null}' should match null filter value --- index.js | 4 +++- package.json | 2 +- tests/index-spec.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 370e5b8..0392e94 100644 --- a/index.js +++ b/index.js @@ -308,7 +308,9 @@ var znFilterMatcher = (function() { } else if (recordValue.id !== undefined) { recordValue = recordValue.id; } - } else if (recordValue === null || recordValue === undefined) { + } + + if (recordValue === null || recordValue === undefined) { return ''; } diff --git a/package.json b/package.json index c041926..4c09a57 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zn-filter-matcher", - "version": "1.2.2", + "version": "1.2.3", "description": "Zengine Filter Matcher", "main": "index.js", "scripts": { diff --git a/tests/index-spec.js b/tests/index-spec.js index 183bfb2..9b834e2 100644 --- a/tests/index-spec.js +++ b/tests/index-spec.js @@ -66,6 +66,27 @@ describe('znFilterMatcher', function() { }); + it('should return true with null object', function() { + + record.field1 = { + id: null, + name: null + }; + + filter = { + and: [ + { + prefix: '', + attribute: 'field1', + value: null + } + ] + }; + + expect(znFilterMatcher.recordMatchesFilter(record, filter)).toBe(true); + + }); + }); /** @@ -117,6 +138,27 @@ describe('znFilterMatcher', function() { }); + it('should return true with null object', function() { + + record.field1 = { + id: null, + name: null + }; + + filter = { + and: [ + { + prefix: 'not', + attribute: 'field1', + value: 'null' + } + ] + }; + + expect(znFilterMatcher.recordMatchesFilter(record, filter)).toBe(false); + + }); + }); /**