gitea源码

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