code.gitea.io/gitea@v1.21.7/models/migrations/v1_16/v193_test.go (about)

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