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 }