code.gitea.io/gitea@v1.19.3/modules/indexer/code/indexer_test.go (about)

     1  // Copyright 2020 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package code
     5  
     6  import (
     7  	"context"
     8  	"path/filepath"
     9  	"testing"
    10  
    11  	"code.gitea.io/gitea/models/unittest"
    12  	"code.gitea.io/gitea/modules/git"
    13  
    14  	_ "code.gitea.io/gitea/models"
    15  
    16  	"github.com/stretchr/testify/assert"
    17  )
    18  
    19  func TestMain(m *testing.M) {
    20  	unittest.MainTest(m, &unittest.TestOptions{
    21  		GiteaRootPath: filepath.Join("..", "..", ".."),
    22  	})
    23  }
    24  
    25  func testIndexer(name string, t *testing.T, indexer Indexer) {
    26  	t.Run(name, func(t *testing.T) {
    27  		var repoID int64 = 1
    28  		err := index(git.DefaultContext, indexer, repoID)
    29  		assert.NoError(t, err)
    30  		keywords := []struct {
    31  			RepoIDs []int64
    32  			Keyword string
    33  			IDs     []int64
    34  			Langs   int
    35  		}{
    36  			{
    37  				RepoIDs: nil,
    38  				Keyword: "Description",
    39  				IDs:     []int64{repoID},
    40  				Langs:   1,
    41  			},
    42  			{
    43  				RepoIDs: []int64{2},
    44  				Keyword: "Description",
    45  				IDs:     []int64{},
    46  				Langs:   0,
    47  			},
    48  			{
    49  				RepoIDs: nil,
    50  				Keyword: "repo1",
    51  				IDs:     []int64{repoID},
    52  				Langs:   1,
    53  			},
    54  			{
    55  				RepoIDs: []int64{2},
    56  				Keyword: "repo1",
    57  				IDs:     []int64{},
    58  				Langs:   0,
    59  			},
    60  			{
    61  				RepoIDs: nil,
    62  				Keyword: "non-exist",
    63  				IDs:     []int64{},
    64  				Langs:   0,
    65  			},
    66  		}
    67  
    68  		for _, kw := range keywords {
    69  			t.Run(kw.Keyword, func(t *testing.T) {
    70  				total, res, langs, err := indexer.Search(context.TODO(), kw.RepoIDs, "", kw.Keyword, 1, 10, false)
    71  				assert.NoError(t, err)
    72  				assert.EqualValues(t, len(kw.IDs), total)
    73  				assert.Len(t, langs, kw.Langs)
    74  
    75  				ids := make([]int64, 0, len(res))
    76  				for _, hit := range res {
    77  					ids = append(ids, hit.RepoID)
    78  					assert.EqualValues(t, "# repo1\n\nDescription for repo1", hit.Content)
    79  				}
    80  				assert.EqualValues(t, kw.IDs, ids)
    81  			})
    82  		}
    83  
    84  		assert.NoError(t, indexer.Delete(repoID))
    85  	})
    86  }