Skip to content

Commit b237bdb

Browse files
authored
Fix boolean facet selection and add regression test (#149)
1 parent 820dcc9 commit b237bdb

File tree

2 files changed

+33
-6
lines changed

2 files changed

+33
-6
lines changed

src/helpers.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -333,20 +333,17 @@ export const getBuckets = function(data, input, aggregations) {
333333
}
334334

335335
const doc_count = v2[1].array().length;
336+
const isSelected = filters.some((f) => String(f) === String(v2[0]));
336337

337338
//hide zero_doc_count facet only if it is not selected
338-
if (
339-
hide_zero_doc_count &&
340-
doc_count === 0 &&
341-
filters.indexOf(v2[0]) === -1
342-
) {
339+
if (hide_zero_doc_count && doc_count === 0 && !isSelected) {
343340
return;
344341
}
345342

346343
return {
347344
key: v2[0],
348345
doc_count: doc_count,
349-
selected: filters.indexOf(v2[0]) !== -1,
346+
selected: isSelected,
350347
};
351348
})
352349
.filter(Boolean);

tests/searchSpec.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,36 @@ describe('search', function () {
200200
done();
201201
});
202202

203+
it('marks boolean facets as selected', function test(done) {
204+
const dataset = [
205+
{ boolean: true, string: 'true' },
206+
{ boolean: false, string: 'false' },
207+
];
208+
209+
const itemsjs = itemsJS(dataset, {
210+
aggregations: {
211+
boolean: {},
212+
string: {},
213+
},
214+
});
215+
216+
const result = itemsjs.search({
217+
filters: {
218+
boolean: [true],
219+
string: ['true'],
220+
},
221+
});
222+
223+
const booleanBuckets = result.data.aggregations.boolean.buckets;
224+
const stringBuckets = result.data.aggregations.string.buckets;
225+
226+
assert.equal(booleanBuckets[0].key, 'true');
227+
assert.equal(booleanBuckets[0].selected, true);
228+
assert.equal(stringBuckets[0].selected, true);
229+
230+
done();
231+
});
232+
203233
it('makes search with non existing filter value with conjunction true should return no results', function test(done) {
204234
const itemsjs = itemsJS(items, configuration);
205235

0 commit comments

Comments
 (0)