* [API] issue subscription indicate by http status * CI.restart()tags/v1.13.0-dev
@@ -58,9 +58,17 @@ func TestAPIIssueSubscriptions(t *testing.T) { | |||
session.MakeRequest(t, req, http.StatusCreated) | |||
testSubscription(issue1, false) | |||
req = NewRequest(t, "DELETE", urlStr) | |||
session.MakeRequest(t, req, http.StatusOK) | |||
testSubscription(issue1, false) | |||
issue5Repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: issue5.RepoID}).(*models.Repository) | |||
urlStr = fmt.Sprintf("/api/v1/repos/%s/%s/issues/%d/subscriptions/%s?token=%s", issue5Repo.OwnerName, issue5Repo.Name, issue5.Index, owner.Name, token) | |||
req = NewRequest(t, "PUT", urlStr) | |||
session.MakeRequest(t, req, http.StatusCreated) | |||
testSubscription(issue5, true) | |||
req = NewRequest(t, "PUT", urlStr) | |||
session.MakeRequest(t, req, http.StatusOK) | |||
testSubscription(issue5, true) | |||
} |
@@ -45,8 +45,10 @@ func AddIssueSubscription(ctx *context.APIContext) { | |||
// type: string | |||
// required: true | |||
// responses: | |||
// "200": | |||
// description: Already subscribed | |||
// "201": | |||
// "$ref": "#/responses/empty" | |||
// description: Successfully Subscribed | |||
// "304": | |||
// description: User can only subscribe itself if he is no admin | |||
// "404": | |||
@@ -87,8 +89,10 @@ func DelIssueSubscription(ctx *context.APIContext) { | |||
// type: string | |||
// required: true | |||
// responses: | |||
// "200": | |||
// description: Already unsubscribed | |||
// "201": | |||
// "$ref": "#/responses/empty" | |||
// description: Successfully Unsubscribed | |||
// "304": | |||
// description: User can only subscribe itself if he is no admin | |||
// "404": | |||
@@ -126,6 +130,19 @@ func setIssueSubscription(ctx *context.APIContext, watch bool) { | |||
return | |||
} | |||
current, err := models.CheckIssueWatch(user, issue) | |||
if err != nil { | |||
ctx.Error(http.StatusInternalServerError, "CheckIssueWatch", err) | |||
return | |||
} | |||
// If watch state wont change | |||
if current == watch { | |||
ctx.Status(http.StatusOK) | |||
return | |||
} | |||
// Update watch state | |||
if err := models.CreateOrUpdateIssueWatch(user.ID, issue.ID, watch); err != nil { | |||
ctx.Error(http.StatusInternalServerError, "CreateOrUpdateIssueWatch", err) | |||
return |
@@ -5315,8 +5315,11 @@ | |||
} | |||
], | |||
"responses": { | |||
"200": { | |||
"description": "Already subscribed" | |||
}, | |||
"201": { | |||
"$ref": "#/responses/empty" | |||
"description": "Successfully Subscribed" | |||
}, | |||
"304": { | |||
"description": "User can only subscribe itself if he is no admin" | |||
@@ -5370,8 +5373,11 @@ | |||
} | |||
], | |||
"responses": { | |||
"200": { | |||
"description": "Already unsubscribed" | |||
}, | |||
"201": { | |||
"$ref": "#/responses/empty" | |||
"description": "Successfully Unsubscribed" | |||
}, | |||
"304": { | |||
"description": "User can only subscribe itself if he is no admin" |