diff options
Diffstat (limited to 'models/issue_label_test.go')
-rw-r--r-- | models/issue_label_test.go | 394 |
1 files changed, 0 insertions, 394 deletions
diff --git a/models/issue_label_test.go b/models/issue_label_test.go deleted file mode 100644 index 67a09151d8..0000000000 --- a/models/issue_label_test.go +++ /dev/null @@ -1,394 +0,0 @@ -// Copyright 2017 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package models - -import ( - "html/template" - "testing" - - "code.gitea.io/gitea/models/db" - repo_model "code.gitea.io/gitea/models/repo" - "code.gitea.io/gitea/models/unittest" - user_model "code.gitea.io/gitea/models/user" - - "github.com/stretchr/testify/assert" -) - -// TODO TestGetLabelTemplateFile - -func TestLabel_CalOpenIssues(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label := unittest.AssertExistsAndLoadBean(t, &Label{ID: 1}).(*Label) - label.CalOpenIssues() - assert.EqualValues(t, 2, label.NumOpenIssues) -} - -func TestLabel_ForegroundColor(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label := unittest.AssertExistsAndLoadBean(t, &Label{ID: 1}).(*Label) - assert.Equal(t, template.CSS("#000"), label.ForegroundColor()) - - label = unittest.AssertExistsAndLoadBean(t, &Label{ID: 2}).(*Label) - assert.Equal(t, template.CSS("#fff"), label.ForegroundColor()) -} - -func TestNewLabels(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - labels := []*Label{ - {RepoID: 2, Name: "labelName2", Color: "#123456"}, - {RepoID: 3, Name: "labelName3", Color: "#123"}, - {RepoID: 4, Name: "labelName4", Color: "ABCDEF"}, - {RepoID: 5, Name: "labelName5", Color: "DEF"}, - } - assert.Error(t, NewLabel(db.DefaultContext, &Label{RepoID: 3, Name: "invalid Color", Color: ""})) - assert.Error(t, NewLabel(db.DefaultContext, &Label{RepoID: 3, Name: "invalid Color", Color: "#45G"})) - assert.Error(t, NewLabel(db.DefaultContext, &Label{RepoID: 3, Name: "invalid Color", Color: "#12345G"})) - assert.Error(t, NewLabel(db.DefaultContext, &Label{RepoID: 3, Name: "invalid Color", Color: "45G"})) - assert.Error(t, NewLabel(db.DefaultContext, &Label{RepoID: 3, Name: "invalid Color", Color: "12345G"})) - for _, label := range labels { - unittest.AssertNotExistsBean(t, label) - } - assert.NoError(t, NewLabels(labels...)) - for _, label := range labels { - unittest.AssertExistsAndLoadBean(t, label, unittest.Cond("id = ?", label.ID)) - } - unittest.CheckConsistencyFor(t, &Label{}, &repo_model.Repository{}) -} - -func TestGetLabelByID(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label, err := GetLabelByID(db.DefaultContext, 1) - assert.NoError(t, err) - assert.EqualValues(t, 1, label.ID) - - _, err = GetLabelByID(db.DefaultContext, unittest.NonexistentID) - assert.True(t, IsErrLabelNotExist(err)) -} - -func TestGetLabelInRepoByName(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label, err := GetLabelInRepoByName(db.DefaultContext, 1, "label1") - assert.NoError(t, err) - assert.EqualValues(t, 1, label.ID) - assert.Equal(t, "label1", label.Name) - - _, err = GetLabelInRepoByName(db.DefaultContext, 1, "") - assert.True(t, IsErrRepoLabelNotExist(err)) - - _, err = GetLabelInRepoByName(db.DefaultContext, unittest.NonexistentID, "nonexistent") - assert.True(t, IsErrRepoLabelNotExist(err)) -} - -func TestGetLabelInRepoByNames(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - labelIDs, err := GetLabelIDsInRepoByNames(1, []string{"label1", "label2"}) - assert.NoError(t, err) - - assert.Len(t, labelIDs, 2) - - assert.Equal(t, int64(1), labelIDs[0]) - assert.Equal(t, int64(2), labelIDs[1]) -} - -func TestGetLabelInRepoByNamesDiscardsNonExistentLabels(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - // label3 doesn't exists.. See labels.yml - labelIDs, err := GetLabelIDsInRepoByNames(1, []string{"label1", "label2", "label3"}) - assert.NoError(t, err) - - assert.Len(t, labelIDs, 2) - - assert.Equal(t, int64(1), labelIDs[0]) - assert.Equal(t, int64(2), labelIDs[1]) - assert.NoError(t, err) -} - -func TestGetLabelInRepoByID(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label, err := GetLabelInRepoByID(db.DefaultContext, 1, 1) - assert.NoError(t, err) - assert.EqualValues(t, 1, label.ID) - - _, err = GetLabelInRepoByID(db.DefaultContext, 1, -1) - assert.True(t, IsErrRepoLabelNotExist(err)) - - _, err = GetLabelInRepoByID(db.DefaultContext, unittest.NonexistentID, unittest.NonexistentID) - assert.True(t, IsErrRepoLabelNotExist(err)) -} - -func TestGetLabelsInRepoByIDs(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - labels, err := GetLabelsInRepoByIDs(1, []int64{1, 2, unittest.NonexistentID}) - assert.NoError(t, err) - if assert.Len(t, labels, 2) { - assert.EqualValues(t, 1, labels[0].ID) - assert.EqualValues(t, 2, labels[1].ID) - } -} - -func TestGetLabelsByRepoID(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - testSuccess := func(repoID int64, sortType string, expectedIssueIDs []int64) { - labels, err := GetLabelsByRepoID(db.DefaultContext, repoID, sortType, db.ListOptions{}) - assert.NoError(t, err) - assert.Len(t, labels, len(expectedIssueIDs)) - for i, label := range labels { - assert.EqualValues(t, expectedIssueIDs[i], label.ID) - } - } - testSuccess(1, "leastissues", []int64{2, 1}) - testSuccess(1, "mostissues", []int64{1, 2}) - testSuccess(1, "reversealphabetically", []int64{2, 1}) - testSuccess(1, "default", []int64{1, 2}) -} - -// Org versions - -func TestGetLabelInOrgByName(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label, err := GetLabelInOrgByName(db.DefaultContext, 3, "orglabel3") - assert.NoError(t, err) - assert.EqualValues(t, 3, label.ID) - assert.Equal(t, "orglabel3", label.Name) - - _, err = GetLabelInOrgByName(db.DefaultContext, 3, "") - assert.True(t, IsErrOrgLabelNotExist(err)) - - _, err = GetLabelInOrgByName(db.DefaultContext, 0, "orglabel3") - assert.True(t, IsErrOrgLabelNotExist(err)) - - _, err = GetLabelInOrgByName(db.DefaultContext, -1, "orglabel3") - assert.True(t, IsErrOrgLabelNotExist(err)) - - _, err = GetLabelInOrgByName(db.DefaultContext, unittest.NonexistentID, "nonexistent") - assert.True(t, IsErrOrgLabelNotExist(err)) -} - -func TestGetLabelInOrgByNames(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - labelIDs, err := GetLabelIDsInOrgByNames(3, []string{"orglabel3", "orglabel4"}) - assert.NoError(t, err) - - assert.Len(t, labelIDs, 2) - - assert.Equal(t, int64(3), labelIDs[0]) - assert.Equal(t, int64(4), labelIDs[1]) -} - -func TestGetLabelInOrgByNamesDiscardsNonExistentLabels(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - // orglabel99 doesn't exists.. See labels.yml - labelIDs, err := GetLabelIDsInOrgByNames(3, []string{"orglabel3", "orglabel4", "orglabel99"}) - assert.NoError(t, err) - - assert.Len(t, labelIDs, 2) - - assert.Equal(t, int64(3), labelIDs[0]) - assert.Equal(t, int64(4), labelIDs[1]) - assert.NoError(t, err) -} - -func TestGetLabelInOrgByID(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label, err := GetLabelInOrgByID(db.DefaultContext, 3, 3) - assert.NoError(t, err) - assert.EqualValues(t, 3, label.ID) - - _, err = GetLabelInOrgByID(db.DefaultContext, 3, -1) - assert.True(t, IsErrOrgLabelNotExist(err)) - - _, err = GetLabelInOrgByID(db.DefaultContext, 0, 3) - assert.True(t, IsErrOrgLabelNotExist(err)) - - _, err = GetLabelInOrgByID(db.DefaultContext, -1, 3) - assert.True(t, IsErrOrgLabelNotExist(err)) - - _, err = GetLabelInOrgByID(db.DefaultContext, unittest.NonexistentID, unittest.NonexistentID) - assert.True(t, IsErrOrgLabelNotExist(err)) -} - -func TestGetLabelsInOrgByIDs(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - labels, err := GetLabelsInOrgByIDs(3, []int64{3, 4, unittest.NonexistentID}) - assert.NoError(t, err) - if assert.Len(t, labels, 2) { - assert.EqualValues(t, 3, labels[0].ID) - assert.EqualValues(t, 4, labels[1].ID) - } -} - -func TestGetLabelsByOrgID(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - testSuccess := func(orgID int64, sortType string, expectedIssueIDs []int64) { - labels, err := GetLabelsByOrgID(db.DefaultContext, orgID, sortType, db.ListOptions{}) - assert.NoError(t, err) - assert.Len(t, labels, len(expectedIssueIDs)) - for i, label := range labels { - assert.EqualValues(t, expectedIssueIDs[i], label.ID) - } - } - testSuccess(3, "leastissues", []int64{3, 4}) - testSuccess(3, "mostissues", []int64{4, 3}) - testSuccess(3, "reversealphabetically", []int64{4, 3}) - testSuccess(3, "default", []int64{3, 4}) - - var err error - _, err = GetLabelsByOrgID(db.DefaultContext, 0, "leastissues", db.ListOptions{}) - assert.True(t, IsErrOrgLabelNotExist(err)) - - _, err = GetLabelsByOrgID(db.DefaultContext, -1, "leastissues", db.ListOptions{}) - assert.True(t, IsErrOrgLabelNotExist(err)) -} - -// - -func TestGetLabelsByIssueID(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - labels, err := GetLabelsByIssueID(db.DefaultContext, 1) - assert.NoError(t, err) - if assert.Len(t, labels, 1) { - assert.EqualValues(t, 1, labels[0].ID) - } - - labels, err = GetLabelsByIssueID(db.DefaultContext, unittest.NonexistentID) - assert.NoError(t, err) - assert.Len(t, labels, 0) -} - -func TestUpdateLabel(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label := unittest.AssertExistsAndLoadBean(t, &Label{ID: 1}).(*Label) - // make sure update wont overwrite it - update := &Label{ - ID: label.ID, - Color: "#ffff00", - Name: "newLabelName", - Description: label.Description, - } - label.Color = update.Color - label.Name = update.Name - assert.NoError(t, UpdateLabel(update)) - newLabel := unittest.AssertExistsAndLoadBean(t, &Label{ID: 1}).(*Label) - assert.EqualValues(t, label.ID, newLabel.ID) - assert.EqualValues(t, label.Color, newLabel.Color) - assert.EqualValues(t, label.Name, newLabel.Name) - assert.EqualValues(t, label.Description, newLabel.Description) - unittest.CheckConsistencyFor(t, &Label{}, &repo_model.Repository{}) -} - -func TestDeleteLabel(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label := unittest.AssertExistsAndLoadBean(t, &Label{ID: 1}).(*Label) - assert.NoError(t, DeleteLabel(label.RepoID, label.ID)) - unittest.AssertNotExistsBean(t, &Label{ID: label.ID, RepoID: label.RepoID}) - - assert.NoError(t, DeleteLabel(label.RepoID, label.ID)) - unittest.AssertNotExistsBean(t, &Label{ID: label.ID}) - - assert.NoError(t, DeleteLabel(unittest.NonexistentID, unittest.NonexistentID)) - unittest.CheckConsistencyFor(t, &Label{}, &repo_model.Repository{}) -} - -func TestHasIssueLabel(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - assert.True(t, HasIssueLabel(db.DefaultContext, 1, 1)) - assert.False(t, HasIssueLabel(db.DefaultContext, 1, 2)) - assert.False(t, HasIssueLabel(db.DefaultContext, unittest.NonexistentID, unittest.NonexistentID)) -} - -func TestNewIssueLabel(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label := unittest.AssertExistsAndLoadBean(t, &Label{ID: 2}).(*Label) - issue := unittest.AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue) - doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) - - // add new IssueLabel - prevNumIssues := label.NumIssues - assert.NoError(t, NewIssueLabel(issue, label, doer)) - unittest.AssertExistsAndLoadBean(t, &IssueLabel{IssueID: issue.ID, LabelID: label.ID}) - unittest.AssertExistsAndLoadBean(t, &Comment{ - Type: CommentTypeLabel, - PosterID: doer.ID, - IssueID: issue.ID, - LabelID: label.ID, - Content: "1", - }) - label = unittest.AssertExistsAndLoadBean(t, &Label{ID: 2}).(*Label) - assert.EqualValues(t, prevNumIssues+1, label.NumIssues) - - // re-add existing IssueLabel - assert.NoError(t, NewIssueLabel(issue, label, doer)) - unittest.CheckConsistencyFor(t, &Issue{}, &Label{}) -} - -func TestNewIssueLabels(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - label1 := unittest.AssertExistsAndLoadBean(t, &Label{ID: 1}).(*Label) - label2 := unittest.AssertExistsAndLoadBean(t, &Label{ID: 2}).(*Label) - issue := unittest.AssertExistsAndLoadBean(t, &Issue{ID: 5}).(*Issue) - doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) - - assert.NoError(t, NewIssueLabels(issue, []*Label{label1, label2}, doer)) - unittest.AssertExistsAndLoadBean(t, &IssueLabel{IssueID: issue.ID, LabelID: label1.ID}) - unittest.AssertExistsAndLoadBean(t, &Comment{ - Type: CommentTypeLabel, - PosterID: doer.ID, - IssueID: issue.ID, - LabelID: label1.ID, - Content: "1", - }) - unittest.AssertExistsAndLoadBean(t, &IssueLabel{IssueID: issue.ID, LabelID: label1.ID}) - label1 = unittest.AssertExistsAndLoadBean(t, &Label{ID: 1}).(*Label) - assert.EqualValues(t, 3, label1.NumIssues) - assert.EqualValues(t, 1, label1.NumClosedIssues) - label2 = unittest.AssertExistsAndLoadBean(t, &Label{ID: 2}).(*Label) - assert.EqualValues(t, 1, label2.NumIssues) - assert.EqualValues(t, 1, label2.NumClosedIssues) - - // corner case: test empty slice - assert.NoError(t, NewIssueLabels(issue, []*Label{}, doer)) - - unittest.CheckConsistencyFor(t, &Issue{}, &Label{}) -} - -func TestDeleteIssueLabel(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - testSuccess := func(labelID, issueID, doerID int64) { - label := unittest.AssertExistsAndLoadBean(t, &Label{ID: labelID}).(*Label) - issue := unittest.AssertExistsAndLoadBean(t, &Issue{ID: issueID}).(*Issue) - doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: doerID}).(*user_model.User) - - expectedNumIssues := label.NumIssues - expectedNumClosedIssues := label.NumClosedIssues - if unittest.BeanExists(t, &IssueLabel{IssueID: issueID, LabelID: labelID}) { - expectedNumIssues-- - if issue.IsClosed { - expectedNumClosedIssues-- - } - } - - ctx, committer, err := db.TxContext() - defer committer.Close() - assert.NoError(t, err) - assert.NoError(t, DeleteIssueLabel(ctx, issue, label, doer)) - assert.NoError(t, committer.Commit()) - - unittest.AssertNotExistsBean(t, &IssueLabel{IssueID: issueID, LabelID: labelID}) - unittest.AssertExistsAndLoadBean(t, &Comment{ - Type: CommentTypeLabel, - PosterID: doerID, - IssueID: issueID, - LabelID: labelID, - }, `content=""`) - label = unittest.AssertExistsAndLoadBean(t, &Label{ID: labelID}).(*Label) - assert.EqualValues(t, expectedNumIssues, label.NumIssues) - assert.EqualValues(t, expectedNumClosedIssues, label.NumClosedIssues) - } - testSuccess(1, 1, 2) - testSuccess(2, 5, 2) - testSuccess(1, 1, 2) // delete non-existent IssueLabel - - unittest.CheckConsistencyFor(t, &Issue{}, &Label{}) -} |