code.gitea.io/gitea@v1.22.3/models/db/iterate_test.go (about)

     1  // Copyright 2022 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package db_test
     5  
     6  import (
     7  	"context"
     8  	"testing"
     9  
    10  	"code.gitea.io/gitea/models/db"
    11  	repo_model "code.gitea.io/gitea/models/repo"
    12  	"code.gitea.io/gitea/models/unittest"
    13  
    14  	"github.com/stretchr/testify/assert"
    15  )
    16  
    17  func TestIterate(t *testing.T) {
    18  	assert.NoError(t, unittest.PrepareTestDatabase())
    19  	xe := unittest.GetXORMEngine()
    20  	assert.NoError(t, xe.Sync(&repo_model.RepoUnit{}))
    21  
    22  	cnt, err := db.GetEngine(db.DefaultContext).Count(&repo_model.RepoUnit{})
    23  	assert.NoError(t, err)
    24  
    25  	var repoUnitCnt int
    26  	err = db.Iterate(db.DefaultContext, nil, func(ctx context.Context, repo *repo_model.RepoUnit) error {
    27  		repoUnitCnt++
    28  		return nil
    29  	})
    30  	assert.NoError(t, err)
    31  	assert.EqualValues(t, cnt, repoUnitCnt)
    32  
    33  	err = db.Iterate(db.DefaultContext, nil, func(ctx context.Context, repoUnit *repo_model.RepoUnit) error {
    34  		has, err := db.ExistByID[repo_model.RepoUnit](ctx, repoUnit.ID)
    35  		if err != nil {
    36  			return err
    37  		}
    38  		if !has {
    39  			return db.ErrNotExist{Resource: "repo_unit", ID: repoUnit.ID}
    40  		}
    41  		assert.EqualValues(t, repoUnit.RepoID, repoUnit.RepoID)
    42  		assert.EqualValues(t, repoUnit.CreatedUnix, repoUnit.CreatedUnix)
    43  		return nil
    44  	})
    45  	assert.NoError(t, err)
    46  }