From 2d305415b3de4191a718d38c81c395bf84542715 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Mon, 7 Mar 2016 14:42:40 -0800 Subject: [PATCH] [Search] Index directly on mutation Pass model directly when indexing is triggered via object mutation, to avoid issuing an extra, unnecessary request to the server. Additionally supports indexing of objects which have been created but not yet persisted. Addresses #377. --- platform/search/src/services/GenericSearchProvider.js | 6 +++--- .../search/test/services/GenericSearchProviderSpec.js | 9 ++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/platform/search/src/services/GenericSearchProvider.js b/platform/search/src/services/GenericSearchProvider.js index 71dfe8c0ed..251b0d98ff 100644 --- a/platform/search/src/services/GenericSearchProvider.js +++ b/platform/search/src/services/GenericSearchProvider.js @@ -121,9 +121,9 @@ define([ provider = this; mutationTopic.listen(function (mutatedObject) { - var id = mutatedObject.getId(); - provider.indexedIds[id] = false; - provider.scheduleForIndexing(id); + var id = mutatedObject.getId(), + model = mutatedObject.getModel(); + provider.index(id, model); }); }; diff --git a/platform/search/test/services/GenericSearchProviderSpec.js b/platform/search/test/services/GenericSearchProviderSpec.js index cc80e4210d..9934d5130a 100644 --- a/platform/search/test/services/GenericSearchProviderSpec.js +++ b/platform/search/test/services/GenericSearchProviderSpec.js @@ -99,12 +99,15 @@ define([ .toHaveBeenCalledWith(jasmine.any(Function)); }); - it('reschedules indexing when mutation occurs', function () { + it('re-indexes when mutation occurs', function () { var mockDomainObject = - jasmine.createSpyObj('domainObj', ['getId']); + jasmine.createSpyObj('domainObj', ['getId', 'getModel']), + testModel = { some: 'model' }; mockDomainObject.getId.andReturn("some-id"); + mockDomainObject.getModel.andReturn(testModel); + spyOn(provider, 'index').andCallThrough(); mutationTopic.listen.mostRecentCall.args[0](mockDomainObject); - expect(provider.scheduleForIndexing).toHaveBeenCalledWith('some-id'); + expect(provider.index).toHaveBeenCalledWith('some-id', testModel); }); it('starts indexing roots', function () {