code.gitea.io/gitea@v1.19.3/modules/indexer/issues/indexer_test.go (about) 1 // Copyright 2019 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package issues 5 6 import ( 7 "context" 8 "path" 9 "path/filepath" 10 "testing" 11 "time" 12 13 "code.gitea.io/gitea/models/unittest" 14 "code.gitea.io/gitea/modules/setting" 15 16 _ "code.gitea.io/gitea/models" 17 18 "github.com/stretchr/testify/assert" 19 "gopkg.in/ini.v1" 20 ) 21 22 func TestMain(m *testing.M) { 23 unittest.MainTest(m, &unittest.TestOptions{ 24 GiteaRootPath: filepath.Join("..", "..", ".."), 25 }) 26 } 27 28 func TestBleveSearchIssues(t *testing.T) { 29 assert.NoError(t, unittest.PrepareTestDatabase()) 30 setting.CfgProvider = ini.Empty() 31 32 tmpIndexerDir := t.TempDir() 33 34 setting.CfgProvider.Section("queue.issue_indexer").Key("DATADIR").MustString(path.Join(tmpIndexerDir, "issues.queue")) 35 36 oldIssuePath := setting.Indexer.IssuePath 37 setting.Indexer.IssuePath = path.Join(tmpIndexerDir, "issues.queue") 38 defer func() { 39 setting.Indexer.IssuePath = oldIssuePath 40 }() 41 42 setting.Indexer.IssueType = "bleve" 43 setting.LoadQueueSettings() 44 InitIssueIndexer(true) 45 defer func() { 46 indexer := holder.get() 47 if bleveIndexer, ok := indexer.(*BleveIndexer); ok { 48 bleveIndexer.Close() 49 } 50 }() 51 52 time.Sleep(5 * time.Second) 53 54 ids, err := SearchIssuesByKeyword(context.TODO(), []int64{1}, "issue2") 55 assert.NoError(t, err) 56 assert.EqualValues(t, []int64{2}, ids) 57 58 ids, err = SearchIssuesByKeyword(context.TODO(), []int64{1}, "first") 59 assert.NoError(t, err) 60 assert.EqualValues(t, []int64{1}, ids) 61 62 ids, err = SearchIssuesByKeyword(context.TODO(), []int64{1}, "for") 63 assert.NoError(t, err) 64 assert.ElementsMatch(t, []int64{1, 2, 3, 5, 11}, ids) 65 66 ids, err = SearchIssuesByKeyword(context.TODO(), []int64{1}, "good") 67 assert.NoError(t, err) 68 assert.EqualValues(t, []int64{1}, ids) 69 } 70 71 func TestDBSearchIssues(t *testing.T) { 72 assert.NoError(t, unittest.PrepareTestDatabase()) 73 74 setting.Indexer.IssueType = "db" 75 InitIssueIndexer(true) 76 77 ids, err := SearchIssuesByKeyword(context.TODO(), []int64{1}, "issue2") 78 assert.NoError(t, err) 79 assert.EqualValues(t, []int64{2}, ids) 80 81 ids, err = SearchIssuesByKeyword(context.TODO(), []int64{1}, "first") 82 assert.NoError(t, err) 83 assert.EqualValues(t, []int64{1}, ids) 84 85 ids, err = SearchIssuesByKeyword(context.TODO(), []int64{1}, "for") 86 assert.NoError(t, err) 87 assert.ElementsMatch(t, []int64{1, 2, 3, 5, 11}, ids) 88 89 ids, err = SearchIssuesByKeyword(context.TODO(), []int64{1}, "good") 90 assert.NoError(t, err) 91 assert.EqualValues(t, []int64{1}, ids) 92 }