code.gitea.io/gitea@v1.19.3/modules/indexer/issues/bleve_test.go (about) 1 // Copyright 2018 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package issues 5 6 import ( 7 "context" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestBleveIndexAndSearch(t *testing.T) { 14 dir := t.TempDir() 15 indexer := NewBleveIndexer(dir) 16 defer indexer.Close() 17 18 if _, err := indexer.Init(); err != nil { 19 assert.Fail(t, "Unable to initialize bleve indexer: %v", err) 20 return 21 } 22 23 err := indexer.Index([]*IndexerData{ 24 { 25 ID: 1, 26 RepoID: 2, 27 Title: "Issue search should support Chinese", 28 Content: "As title", 29 Comments: []string{ 30 "test1", 31 "test2", 32 }, 33 }, 34 { 35 ID: 2, 36 RepoID: 2, 37 Title: "CJK support could be optional", 38 Content: "Chinese Korean and Japanese should be supported but I would like it's not enabled by default", 39 Comments: []string{ 40 "LGTM", 41 "Good idea", 42 }, 43 }, 44 }) 45 assert.NoError(t, err) 46 47 keywords := []struct { 48 Keyword string 49 IDs []int64 50 }{ 51 { 52 Keyword: "search", 53 IDs: []int64{1}, 54 }, 55 { 56 Keyword: "test1", 57 IDs: []int64{1}, 58 }, 59 { 60 Keyword: "test2", 61 IDs: []int64{1}, 62 }, 63 { 64 Keyword: "support", 65 IDs: []int64{1, 2}, 66 }, 67 { 68 Keyword: "chinese", 69 IDs: []int64{1, 2}, 70 }, 71 { 72 Keyword: "help", 73 IDs: []int64{}, 74 }, 75 } 76 77 for _, kw := range keywords { 78 res, err := indexer.Search(context.TODO(), kw.Keyword, []int64{2}, 10, 0) 79 assert.NoError(t, err) 80 81 ids := make([]int64, 0, len(res.Hits)) 82 for _, hit := range res.Hits { 83 ids = append(ids, hit.ID) 84 } 85 assert.ElementsMatch(t, kw.IDs, ids) 86 } 87 }