gitea/modules/indexer/issues/bleve_test.go

98 lines
1.8 KiB
Go
Raw Normal View History

2019-02-19 22:39:39 +08:00
// Copyright 2018 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package issues
import (
"context"
"os"
2019-02-19 22:39:39 +08:00
"testing"
"code.gitea.io/gitea/modules/util"
2019-02-19 22:39:39 +08:00
"github.com/stretchr/testify/assert"
)
func TestBleveIndexAndSearch(t *testing.T) {
dir, err := os.MkdirTemp("", "bleve.index")
assert.NoError(t, err)
if err != nil {
assert.Fail(t, "Unable to create temporary directory")
return
}
defer util.RemoveAll(dir)
indexer := NewBleveIndexer(dir)
defer indexer.Close()
2019-02-19 22:39:39 +08:00
if _, err := indexer.Init(); err != nil {
assert.Fail(t, "Unable to initialise bleve indexer: %v", err)
return
}
2019-02-19 22:39:39 +08:00
err = indexer.Index([]*IndexerData{
{
ID: 1,
RepoID: 2,
Title: "Issue search should support Chinese",
Content: "As title",
Comments: []string{
"test1",
"test2",
},
},
{
ID: 2,
RepoID: 2,
Title: "CJK support could be optional",
Content: "Chinese Korean and Japanese should be supported but I would like it's not enabled by default",
Comments: []string{
"LGTM",
"Good idea",
},
},
})
assert.NoError(t, err)
keywords := []struct {
Keyword string
IDs []int64
}{
{
Keyword: "search",
IDs: []int64{1},
},
{
Keyword: "test1",
IDs: []int64{1},
},
{
Keyword: "test2",
IDs: []int64{1},
},
{
Keyword: "support",
IDs: []int64{1, 2},
},
{
Keyword: "chinese",
IDs: []int64{1, 2},
},
{
Keyword: "help",
IDs: []int64{},
},
}
2019-02-19 22:39:39 +08:00
for _, kw := range keywords {
res, err := indexer.Search(context.TODO(), kw.Keyword, []int64{2}, 10, 0)
2019-02-19 22:39:39 +08:00
assert.NoError(t, err)
ids := make([]int64, 0, len(res.Hits))
2019-02-19 22:39:39 +08:00
for _, hit := range res.Hits {
ids = append(ids, hit.ID)
}
assert.ElementsMatch(t, kw.IDs, ids)
2019-02-19 22:39:39 +08:00
}
}