mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	API allow to create closed milestones (#11745)
* API allow to create closed milestones * set CloseDate too Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		@@ -44,4 +44,17 @@ func TestAPIIssuesMilestone(t *testing.T) {
 | 
				
			|||||||
	var apiMilestone2 structs.Milestone
 | 
						var apiMilestone2 structs.Milestone
 | 
				
			||||||
	DecodeJSON(t, resp, &apiMilestone2)
 | 
						DecodeJSON(t, resp, &apiMilestone2)
 | 
				
			||||||
	assert.EqualValues(t, "closed", apiMilestone2.State)
 | 
						assert.EqualValues(t, "closed", apiMilestone2.State)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						req = NewRequestWithJSON(t, "POST", fmt.Sprintf("/api/v1/repos/%s/%s/milestones?token=%s", owner.Name, repo.Name, token), structs.CreateMilestoneOption{
 | 
				
			||||||
 | 
							Title:       "wow",
 | 
				
			||||||
 | 
							Description: "closed one",
 | 
				
			||||||
 | 
							State:       "closed",
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						resp = session.MakeRequest(t, req, http.StatusCreated)
 | 
				
			||||||
 | 
						DecodeJSON(t, resp, &apiMilestone)
 | 
				
			||||||
 | 
						assert.Equal(t, "wow", apiMilestone.Title)
 | 
				
			||||||
 | 
						assert.Equal(t, structs.StateClosed, apiMilestone.State)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						req = NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/repos/%s/%s/milestones/%d?token=%s", owner.Name, repo.Name, apiMilestone.ID, token))
 | 
				
			||||||
 | 
						resp = session.MakeRequest(t, req, http.StatusNoContent)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,8 @@ type CreateMilestoneOption struct {
 | 
				
			|||||||
	Description string `json:"description"`
 | 
						Description string `json:"description"`
 | 
				
			||||||
	// swagger:strfmt date-time
 | 
						// swagger:strfmt date-time
 | 
				
			||||||
	Deadline *time.Time `json:"due_on"`
 | 
						Deadline *time.Time `json:"due_on"`
 | 
				
			||||||
 | 
						// enum: open,closed
 | 
				
			||||||
 | 
						State string `json:"state"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// EditMilestoneOption options for editing a milestone
 | 
					// EditMilestoneOption options for editing a milestone
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -144,6 +144,11 @@ func CreateMilestone(ctx *context.APIContext, form api.CreateMilestoneOption) {
 | 
				
			|||||||
		DeadlineUnix: timeutil.TimeStamp(form.Deadline.Unix()),
 | 
							DeadlineUnix: timeutil.TimeStamp(form.Deadline.Unix()),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if form.State == "closed" {
 | 
				
			||||||
 | 
							milestone.IsClosed = true
 | 
				
			||||||
 | 
							milestone.ClosedDateUnix = timeutil.TimeStampNow()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := models.NewMilestone(milestone); err != nil {
 | 
						if err := models.NewMilestone(milestone); err != nil {
 | 
				
			||||||
		ctx.Error(http.StatusInternalServerError, "NewMilestone", err)
 | 
							ctx.Error(http.StatusInternalServerError, "NewMilestone", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11384,6 +11384,14 @@
 | 
				
			|||||||
          "format": "date-time",
 | 
					          "format": "date-time",
 | 
				
			||||||
          "x-go-name": "Deadline"
 | 
					          "x-go-name": "Deadline"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "state": {
 | 
				
			||||||
 | 
					          "type": "string",
 | 
				
			||||||
 | 
					          "enum": [
 | 
				
			||||||
 | 
					            "open",
 | 
				
			||||||
 | 
					            "closed"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "x-go-name": "State"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "title": {
 | 
					        "title": {
 | 
				
			||||||
          "type": "string",
 | 
					          "type": "string",
 | 
				
			||||||
          "x-go-name": "Title"
 | 
					          "x-go-name": "Title"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user