diff --git a/extensions/search/pkg/search/provider/searchprovider.go b/extensions/search/pkg/search/provider/searchprovider.go index 471024a56..223251c09 100644 --- a/extensions/search/pkg/search/provider/searchprovider.go +++ b/extensions/search/pkg/search/provider/searchprovider.go @@ -51,6 +51,21 @@ func New(gwClient gateway.GatewayAPIClient, indexClient search.IndexClient, mach owner = &user.User{ Id: e.Executant, } + case events.ItemMoved: + ref = e.Ref + owner = &user.User{ + Id: e.Executant, + } + case events.ItemRestored: + ref = e.Ref + owner = &user.User{ + Id: e.Executant, + } + case events.FileVersionRestored: + ref = e.Ref + owner = &user.User{ + Id: e.Executant, + } case events.ItemTrashed: err := p.indexClient.Remove(e.Id) if err != nil { diff --git a/extensions/search/pkg/search/provider/searchprovider_test.go b/extensions/search/pkg/search/provider/searchprovider_test.go index a622ea956..0ce1f4ab5 100644 --- a/extensions/search/pkg/search/provider/searchprovider_test.go +++ b/extensions/search/pkg/search/provider/searchprovider_test.go @@ -137,6 +137,57 @@ var _ = Describe("Searchprovider", func() { return called }).Should(BeTrue()) }) + + It("indexes items when they are being restored", func() { + called := false + indexClient.On("Add", mock.Anything, mock.MatchedBy(func(riToIndex *sprovider.ResourceInfo) bool { + return riToIndex.Id.OpaqueId == ri.Id.OpaqueId + })).Return(nil).Run(func(args mock.Arguments) { + called = true + }) + eventsChan <- events.ItemRestored{ + Ref: ref, + Executant: user.Id, + } + + Eventually(func() bool { + return called + }).Should(BeTrue()) + }) + + It("indexes items when a version has been restored", func() { + called := false + indexClient.On("Add", mock.Anything, mock.MatchedBy(func(riToIndex *sprovider.ResourceInfo) bool { + return riToIndex.Id.OpaqueId == ri.Id.OpaqueId + })).Return(nil).Run(func(args mock.Arguments) { + called = true + }) + eventsChan <- events.FileVersionRestored{ + Ref: ref, + Executant: user.Id, + } + + Eventually(func() bool { + return called + }).Should(BeTrue()) + }) + + It("indexes items when they are being moved", func() { + called := false + indexClient.On("Add", mock.Anything, mock.MatchedBy(func(riToIndex *sprovider.ResourceInfo) bool { + return riToIndex.Id.OpaqueId == ri.Id.OpaqueId + })).Return(nil).Run(func(args mock.Arguments) { + called = true + }) + eventsChan <- events.ItemMoved{ + Ref: ref, + Executant: user.Id, + } + + Eventually(func() bool { + return called + }).Should(BeTrue()) + }) }) Describe("IndexSpace", func() {