// Copyright 2018 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package issues
import (
"context"
"testing"
"github.com/stretchr/testify/assert"
)
func TestBleveIndexAndSearch(t *testing.T) {
dir := t.TempDir()
indexer := NewBleveIndexer(dir)
defer indexer.Close()
if _, err := indexer.Init(); err != nil {
assert.Fail(t, "Unable to initialize bleve indexer: %v", err)
return
}
err := indexer.Index([]*IndexerData{
{
ID: 1,
RepoID: 2,
Title: "Issue search should support Chinese",
Content: "As title",
Comments: []string{
"test1",
"test2",
},
ID: 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",
"LGTM",
"Good idea",
})
assert.NoError(t, err)
keywords := []struct {
Keyword string
IDs []int64
}{
Keyword: "search",
IDs: []int64{1},
Keyword: "test1",
Keyword: "test2",
Keyword: "support",
IDs: []int64{1, 2},
Keyword: "chinese",
Keyword: "help",
IDs: []int64{},
for _, kw := range keywords {
res, err := indexer.Search(context.TODO(), kw.Keyword, []int64{2}, 10, 0)
ids := make([]int64, 0, len(res.Hits))
for _, hit := range res.Hits {
ids = append(ids, hit.ID)
assert.ElementsMatch(t, kw.IDs, ids)