summaryrefslogtreecommitdiffstats
path: root/integrations/api_issue_label_test.go
diff options
context:
space:
mode:
authorEthan Koenig <etk39@cornell.edu>2017-06-24 19:52:51 -0400
committerLunny Xiao <xiaolunwen@gmail.com>2017-06-25 07:52:51 +0800
commit3ffedeab03a80e7345823d118042d17a3e3d9b52 (patch)
tree574d09deca0290312e506298f720880170b080e2 /integrations/api_issue_label_test.go
parentbf187304dc1c03e003dc972e36d9e087c78df57a (diff)
downloadgitea-3ffedeab03a80e7345823d118042d17a3e3d9b52.tar.gz
gitea-3ffedeab03a80e7345823d118042d17a3e3d9b52.zip
Fix bug in issue labels API (#2048)
Diffstat (limited to 'integrations/api_issue_label_test.go')
-rw-r--r--integrations/api_issue_label_test.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/integrations/api_issue_label_test.go b/integrations/api_issue_label_test.go
new file mode 100644
index 0000000000..2014d38e7d
--- /dev/null
+++ b/integrations/api_issue_label_test.go
@@ -0,0 +1,64 @@
+// 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 integrations
+
+import (
+ "fmt"
+ "net/http"
+ "testing"
+
+ "code.gitea.io/gitea/models"
+ api "code.gitea.io/sdk/gitea"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestAPIAddIssueLabels(t *testing.T) {
+ assert.NoError(t, models.LoadFixtures())
+
+ repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository)
+ issue := models.AssertExistsAndLoadBean(t, &models.Issue{RepoID: repo.ID}).(*models.Issue)
+ label := models.AssertExistsAndLoadBean(t, &models.Label{RepoID: repo.ID}).(*models.Label)
+ owner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User)
+
+ urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/issues/%d/labels",
+ owner.Name, repo.Name, issue.Index)
+ req := NewRequestWithJSON(t, "POST", urlStr, &api.IssueLabelsOption{
+ Labels: []int64{label.ID},
+ })
+ session := loginUser(t, owner.Name)
+ resp := session.MakeRequest(t, req)
+ assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
+ var apiLabels []*api.Label
+ DecodeJSON(t, resp, &apiLabels)
+ assert.Len(t, apiLabels, models.GetCount(t, &models.IssueLabel{IssueID: issue.ID}))
+
+ models.AssertExistsAndLoadBean(t, &models.IssueLabel{IssueID: issue.ID, LabelID: label.ID})
+}
+
+func TestAPIReplaceIssueLabels(t *testing.T) {
+ assert.NoError(t, models.LoadFixtures())
+
+ repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository)
+ issue := models.AssertExistsAndLoadBean(t, &models.Issue{RepoID: repo.ID}).(*models.Issue)
+ label := models.AssertExistsAndLoadBean(t, &models.Label{RepoID: repo.ID}).(*models.Label)
+ owner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User)
+
+ urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/issues/%d/labels",
+ owner.Name, repo.Name, issue.Index)
+ req := NewRequestWithJSON(t, "PUT", urlStr, &api.IssueLabelsOption{
+ Labels: []int64{label.ID},
+ })
+ session := loginUser(t, owner.Name)
+ resp := session.MakeRequest(t, req)
+ assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
+ var apiLabels []*api.Label
+ DecodeJSON(t, resp, &apiLabels)
+ assert.Len(t, apiLabels, 1)
+ assert.EqualValues(t, label.ID, apiLabels[0].ID)
+
+ models.AssertCount(t, &models.IssueLabel{IssueID: issue.ID}, 1)
+ models.AssertExistsAndLoadBean(t, &models.IssueLabel{IssueID: issue.ID, LabelID: label.ID})
+}