code.gitea.io/gitea@v1.22.3/models/migrations/v1_22/v286_test.go (about) 1 // Copyright 2023 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package v1_22 //nolint 5 6 import ( 7 "testing" 8 9 "code.gitea.io/gitea/models/migrations/base" 10 11 "github.com/stretchr/testify/assert" 12 "xorm.io/xorm" 13 ) 14 15 func PrepareOldRepository(t *testing.T) (*xorm.Engine, func()) { 16 type Repository struct { // old struct 17 ID int64 `xorm:"pk autoincr"` 18 } 19 20 type CommitStatus struct { 21 ID int64 22 ContextHash string `xorm:"char(40) index"` 23 } 24 25 type RepoArchiver struct { 26 ID int64 27 RepoID int64 `xorm:"index unique(s)"` 28 Type int `xorm:"unique(s)"` 29 CommitID string `xorm:"VARCHAR(40) unique(s)"` 30 } 31 32 type ReviewState struct { 33 ID int64 34 UserID int64 `xorm:"NOT NULL UNIQUE(pull_commit_user)"` 35 PullID int64 `xorm:"NOT NULL INDEX UNIQUE(pull_commit_user) DEFAULT 0"` 36 CommitSHA string `xorm:"NOT NULL VARCHAR(40) UNIQUE(pull_commit_user)"` 37 } 38 39 type Comment struct { 40 ID int64 41 CommitSHA string 42 } 43 44 type PullRequest struct { 45 ID int64 46 CommitSHA string 47 MergeBase string 48 MergedCommitID string 49 } 50 51 type Release struct { 52 ID int64 53 Sha1 string 54 } 55 56 type RepoIndexerStatus struct { 57 ID int64 58 CommitSHA string 59 } 60 61 type Review struct { 62 ID int64 63 CommitID string 64 } 65 66 // Prepare and load the testing database 67 return base.PrepareTestEnv(t, 0, 68 new(Repository), 69 new(CommitStatus), 70 new(RepoArchiver), 71 new(ReviewState), 72 new(Review), 73 new(Comment), 74 new(PullRequest), 75 new(Release), 76 new(RepoIndexerStatus), 77 ) 78 } 79 80 func Test_RepositoryFormat(t *testing.T) { 81 x, deferable := PrepareOldRepository(t) 82 defer deferable() 83 84 assert.NoError(t, AdjustDBForSha256(x)) 85 86 type Repository struct { 87 ID int64 `xorm:"pk autoincr"` 88 ObjectFormatName string `xorg:"not null default('sha1')"` 89 } 90 91 repo := new(Repository) 92 93 // check we have some records to migrate 94 count, err := x.Count(new(Repository)) 95 assert.NoError(t, err) 96 assert.EqualValues(t, 4, count) 97 98 repo.ObjectFormatName = "sha256" 99 _, err = x.Insert(repo) 100 assert.NoError(t, err) 101 id := repo.ID 102 103 count, err = x.Count(new(Repository)) 104 assert.NoError(t, err) 105 assert.EqualValues(t, 5, count) 106 107 repo = new(Repository) 108 ok, err := x.ID(2).Get(repo) 109 assert.NoError(t, err) 110 assert.EqualValues(t, true, ok) 111 assert.EqualValues(t, "sha1", repo.ObjectFormatName) 112 113 repo = new(Repository) 114 ok, err = x.ID(id).Get(repo) 115 assert.NoError(t, err) 116 assert.EqualValues(t, true, ok) 117 assert.EqualValues(t, "sha256", repo.ObjectFormatName) 118 }