code.gitea.io/gitea@v1.21.7/services/issue/label_test.go (about)

     1  // Copyright 2017 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package issue
     5  
     6  import (
     7  	"testing"
     8  
     9  	"code.gitea.io/gitea/models/db"
    10  	issues_model "code.gitea.io/gitea/models/issues"
    11  	"code.gitea.io/gitea/models/unittest"
    12  	user_model "code.gitea.io/gitea/models/user"
    13  
    14  	"github.com/stretchr/testify/assert"
    15  )
    16  
    17  func TestIssue_AddLabels(t *testing.T) {
    18  	tests := []struct {
    19  		issueID  int64
    20  		labelIDs []int64
    21  		doerID   int64
    22  	}{
    23  		{1, []int64{1, 2}, 2}, // non-pull-request
    24  		{1, []int64{}, 2},     // non-pull-request, empty
    25  		{2, []int64{1, 2}, 2}, // pull-request
    26  		{2, []int64{}, 1},     // pull-request, empty
    27  	}
    28  	for _, test := range tests {
    29  		assert.NoError(t, unittest.PrepareTestDatabase())
    30  		issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: test.issueID})
    31  		labels := make([]*issues_model.Label, len(test.labelIDs))
    32  		for i, labelID := range test.labelIDs {
    33  			labels[i] = unittest.AssertExistsAndLoadBean(t, &issues_model.Label{ID: labelID})
    34  		}
    35  		doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: test.doerID})
    36  		assert.NoError(t, AddLabels(db.DefaultContext, issue, doer, labels))
    37  		for _, labelID := range test.labelIDs {
    38  			unittest.AssertExistsAndLoadBean(t, &issues_model.IssueLabel{IssueID: test.issueID, LabelID: labelID})
    39  		}
    40  	}
    41  }
    42  
    43  func TestIssue_AddLabel(t *testing.T) {
    44  	tests := []struct {
    45  		issueID int64
    46  		labelID int64
    47  		doerID  int64
    48  	}{
    49  		{1, 2, 2}, // non-pull-request, not-already-added label
    50  		{1, 1, 2}, // non-pull-request, already-added label
    51  		{2, 2, 2}, // pull-request, not-already-added label
    52  		{2, 1, 2}, // pull-request, already-added label
    53  	}
    54  	for _, test := range tests {
    55  		assert.NoError(t, unittest.PrepareTestDatabase())
    56  		issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: test.issueID})
    57  		label := unittest.AssertExistsAndLoadBean(t, &issues_model.Label{ID: test.labelID})
    58  		doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: test.doerID})
    59  		assert.NoError(t, AddLabel(db.DefaultContext, issue, doer, label))
    60  		unittest.AssertExistsAndLoadBean(t, &issues_model.IssueLabel{IssueID: test.issueID, LabelID: test.labelID})
    61  	}
    62  }