* [API] issue subscription indicate by http status * CI.restart()tags/v1.21.12.1
| @@ -58,9 +58,17 @@ func TestAPIIssueSubscriptions(t *testing.T) { | |||||
| session.MakeRequest(t, req, http.StatusCreated) | session.MakeRequest(t, req, http.StatusCreated) | ||||
| testSubscription(issue1, false) | 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) | 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) | 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) | req = NewRequest(t, "PUT", urlStr) | ||||
| session.MakeRequest(t, req, http.StatusCreated) | session.MakeRequest(t, req, http.StatusCreated) | ||||
| testSubscription(issue5, true) | 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 | // type: string | ||||
| // required: true | // required: true | ||||
| // responses: | // responses: | ||||
| // "200": | |||||
| // description: Already subscribed | |||||
| // "201": | // "201": | ||||
| // "$ref": "#/responses/empty" | |||||
| // description: Successfully Subscribed | |||||
| // "304": | // "304": | ||||
| // description: User can only subscribe itself if he is no admin | // description: User can only subscribe itself if he is no admin | ||||
| // "404": | // "404": | ||||
| @@ -87,8 +89,10 @@ func DelIssueSubscription(ctx *context.APIContext) { | |||||
| // type: string | // type: string | ||||
| // required: true | // required: true | ||||
| // responses: | // responses: | ||||
| // "200": | |||||
| // description: Already unsubscribed | |||||
| // "201": | // "201": | ||||
| // "$ref": "#/responses/empty" | |||||
| // description: Successfully Unsubscribed | |||||
| // "304": | // "304": | ||||
| // description: User can only subscribe itself if he is no admin | // description: User can only subscribe itself if he is no admin | ||||
| // "404": | // "404": | ||||
| @@ -126,6 +130,19 @@ func setIssueSubscription(ctx *context.APIContext, watch bool) { | |||||
| return | 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 { | if err := models.CreateOrUpdateIssueWatch(user.ID, issue.ID, watch); err != nil { | ||||
| ctx.Error(http.StatusInternalServerError, "CreateOrUpdateIssueWatch", err) | ctx.Error(http.StatusInternalServerError, "CreateOrUpdateIssueWatch", err) | ||||
| return | return | ||||
| @@ -5315,8 +5315,11 @@ | |||||
| } | } | ||||
| ], | ], | ||||
| "responses": { | "responses": { | ||||
| "200": { | |||||
| "description": "Already subscribed" | |||||
| }, | |||||
| "201": { | "201": { | ||||
| "$ref": "#/responses/empty" | |||||
| "description": "Successfully Subscribed" | |||||
| }, | }, | ||||
| "304": { | "304": { | ||||
| "description": "User can only subscribe itself if he is no admin" | "description": "User can only subscribe itself if he is no admin" | ||||
| @@ -5370,8 +5373,11 @@ | |||||
| } | } | ||||
| ], | ], | ||||
| "responses": { | "responses": { | ||||
| "200": { | |||||
| "description": "Already unsubscribed" | |||||
| }, | |||||
| "201": { | "201": { | ||||
| "$ref": "#/responses/empty" | |||||
| "description": "Successfully Unsubscribed" | |||||
| }, | }, | ||||
| "304": { | "304": { | ||||
| "description": "User can only subscribe itself if he is no admin" | "description": "User can only subscribe itself if he is no admin" | ||||