From 01e6ca4616144ec13b128734ce4dd9498afc950d Mon Sep 17 00:00:00 2001 From: JackGruber <24863925+JackGruber@users.noreply.github.com> Date: Fri, 11 Jun 2021 01:24:50 +0200 Subject: [PATCH] All: Fixes: Wrong field removed in API search (#5066) --- .../searchengine/SearchEngineUtils.test.ts | 21 +++++++++++++++++++ .../searchengine/SearchEngineUtils.ts | 8 +++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/lib/services/searchengine/SearchEngineUtils.test.ts b/packages/lib/services/searchengine/SearchEngineUtils.test.ts index bfc0e8f1be..7105a52210 100644 --- a/packages/lib/services/searchengine/SearchEngineUtils.test.ts +++ b/packages/lib/services/searchengine/SearchEngineUtils.test.ts @@ -83,4 +83,25 @@ describe('services_SearchEngineUtils', function() { expect(rows.map(r=>r.id)).toContain(todo2.id); })); }); + + it('remove auto added fields', (async () => { + await Note.save({ title: 'abcd', body: 'body 1' }); + await searchEngine.syncTables(); + + const testCases = [ + ['title', 'todo_due'], + ['title', 'todo_completed'], + ['title'], + ['title', 'todo_completed', 'todo_due'], + ]; + + for (const testCase of testCases) { + const rows = await SearchEngineUtils.notesForQuery('abcd', false, { fields: [...testCase] }, searchEngine); + testCase.push('type_'); + expect(Object.keys(rows[0]).length).toBe(testCase.length); + for (const field of testCase) { + expect(rows[0]).toHaveProperty(field); + } + } + })); }); diff --git a/packages/lib/services/searchengine/SearchEngineUtils.ts b/packages/lib/services/searchengine/SearchEngineUtils.ts index 387b08d8c9..7c2f634eee 100644 --- a/packages/lib/services/searchengine/SearchEngineUtils.ts +++ b/packages/lib/services/searchengine/SearchEngineUtils.ts @@ -38,10 +38,10 @@ export default class SearchEngineUtils { isTodoAutoAdded = true; } - let isTodoCompletedAutoAdded = false; + let todoCompletedAutoAdded = false; if (fields.indexOf('todo_completed') < 0) { fields.push('todo_completed'); - isTodoCompletedAutoAdded = true; + todoCompletedAutoAdded = true; } const previewOptions = Object.assign({}, { @@ -66,8 +66,8 @@ export default class SearchEngineUtils { const idx = noteIds.indexOf(filteredNotes[i].id); sortedNotes[idx] = filteredNotes[i]; if (idWasAutoAdded) delete sortedNotes[idx].id; - if (isTodoCompletedAutoAdded) delete sortedNotes[idx].is_todo; - if (isTodoAutoAdded) delete sortedNotes[idx].todo_completed; + if (todoCompletedAutoAdded) delete sortedNotes[idx].todo_completed; + if (isTodoAutoAdded) delete sortedNotes[idx].is_todo; } // Note that when the search engine index is somehow corrupted, it might contain