You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

v193_test.go 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // Copyright 2021 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package v1_16 //nolint
  4. import (
  5. "testing"
  6. "code.gitea.io/gitea/models/migrations/base"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func Test_AddRepoIDForAttachment(t *testing.T) {
  10. type Attachment struct {
  11. ID int64 `xorm:"pk autoincr"`
  12. UUID string `xorm:"uuid UNIQUE"`
  13. IssueID int64 `xorm:"INDEX"` // maybe zero when creating
  14. ReleaseID int64 `xorm:"INDEX"` // maybe zero when creating
  15. UploaderID int64 `xorm:"INDEX DEFAULT 0"`
  16. }
  17. type Issue struct {
  18. ID int64
  19. RepoID int64
  20. }
  21. type Release struct {
  22. ID int64
  23. RepoID int64
  24. }
  25. // Prepare and load the testing database
  26. x, deferrable := base.PrepareTestEnv(t, 0, new(Attachment), new(Issue), new(Release))
  27. defer deferrable()
  28. if x == nil || t.Failed() {
  29. return
  30. }
  31. // Run the migration
  32. if err := AddRepoIDForAttachment(x); err != nil {
  33. assert.NoError(t, err)
  34. return
  35. }
  36. type NewAttachment struct {
  37. ID int64 `xorm:"pk autoincr"`
  38. UUID string `xorm:"uuid UNIQUE"`
  39. RepoID int64 `xorm:"INDEX"` // this should not be zero
  40. IssueID int64 `xorm:"INDEX"` // maybe zero when creating
  41. ReleaseID int64 `xorm:"INDEX"` // maybe zero when creating
  42. UploaderID int64 `xorm:"INDEX DEFAULT 0"`
  43. }
  44. var issueAttachments []*NewAttachment
  45. err := x.Table("attachment").Where("issue_id > 0").Find(&issueAttachments)
  46. assert.NoError(t, err)
  47. for _, attach := range issueAttachments {
  48. assert.Greater(t, attach.RepoID, int64(0))
  49. assert.Greater(t, attach.IssueID, int64(0))
  50. var issue Issue
  51. has, err := x.ID(attach.IssueID).Get(&issue)
  52. assert.NoError(t, err)
  53. assert.True(t, has)
  54. assert.EqualValues(t, attach.RepoID, issue.RepoID)
  55. }
  56. var releaseAttachments []*NewAttachment
  57. err = x.Table("attachment").Where("release_id > 0").Find(&releaseAttachments)
  58. assert.NoError(t, err)
  59. for _, attach := range releaseAttachments {
  60. assert.Greater(t, attach.RepoID, int64(0))
  61. assert.Greater(t, attach.ReleaseID, int64(0))
  62. var release Release
  63. has, err := x.ID(attach.ReleaseID).Get(&release)
  64. assert.NoError(t, err)
  65. assert.True(t, has)
  66. assert.EqualValues(t, attach.RepoID, release.RepoID)
  67. }
  68. }