|
8 | 8 | "fmt"
|
9 | 9 | "net/http"
|
10 | 10 | "testing"
|
| 11 | + "time" |
11 | 12 |
|
12 | 13 | "code.gitea.io/gitea/models"
|
13 | 14 | api "code.gitea.io/gitea/modules/structs"
|
@@ -62,3 +63,61 @@ func TestAPICreateIssue(t *testing.T) {
|
62 | 63 | Title: title,
|
63 | 64 | })
|
64 | 65 | }
|
| 66 | + |
| 67 | +func TestAPIEditIssue(t *testing.T) { |
| 68 | + prepareTestEnv(t) |
| 69 | + |
| 70 | + issueBefore := models.AssertExistsAndLoadBean(t, &models.Issue{ID: 9}).(*models.Issue) |
| 71 | + repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: issueBefore.RepoID}).(*models.Repository) |
| 72 | + owner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User) |
| 73 | + assert.NoError(t, issueBefore.LoadAttributes()) |
| 74 | + assert.Equal(t, int64(1019307200), int64(issueBefore.DeadlineUnix)) |
| 75 | + assert.Equal(t, api.StateOpen, issueBefore.State()) |
| 76 | + |
| 77 | + session := loginUser(t, owner.Name) |
| 78 | + token := getTokenForLoggedInUser(t, session) |
| 79 | + |
| 80 | + // update values of issue |
| 81 | + issueState := "closed" |
| 82 | + removeDeadline := time.Unix(0, 0) |
| 83 | + milestone := int64(4) |
| 84 | + body := "new content!" |
| 85 | + title := "new title from api set" |
| 86 | + |
| 87 | + urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/issues/%d?token=%s", owner.Name, repo.Name, issueBefore.Index, token) |
| 88 | + req := NewRequestWithJSON(t, "PATCH", urlStr, api.EditIssueOption{ |
| 89 | + State: &issueState, |
| 90 | + Deadline: &removeDeadline, |
| 91 | + Milestone: &milestone, |
| 92 | + Body: &body, |
| 93 | + Title: title, |
| 94 | + |
| 95 | + // ToDo change more |
| 96 | + }) |
| 97 | + resp := session.MakeRequest(t, req, http.StatusCreated) |
| 98 | + var apiIssue api.Issue |
| 99 | + DecodeJSON(t, resp, &apiIssue) |
| 100 | + |
| 101 | + issueAfter := models.AssertExistsAndLoadBean(t, &models.Issue{ID: 9}).(*models.Issue) |
| 102 | + |
| 103 | + // check deleted user |
| 104 | + assert.Equal(t, int64(500), issueAfter.PosterID) |
| 105 | + assert.NoError(t, issueAfter.LoadAttributes()) |
| 106 | + assert.Equal(t, int64(-1), issueAfter.PosterID) |
| 107 | + assert.Equal(t, int64(-1), issueBefore.PosterID) |
| 108 | + assert.Equal(t, int64(-1), apiIssue.Poster.ID) |
| 109 | + |
| 110 | + // API response |
| 111 | + assert.Equal(t, api.StateClosed, apiIssue.State) |
| 112 | + assert.Equal(t, milestone, apiIssue.Milestone.ID) |
| 113 | + assert.Equal(t, body, apiIssue.Body) |
| 114 | + assert.True(t, apiIssue.Deadline == nil) |
| 115 | + assert.Equal(t, title, apiIssue.Title) |
| 116 | + |
| 117 | + // in database |
| 118 | + assert.Equal(t, api.StateClosed, issueAfter.State()) |
| 119 | + assert.Equal(t, milestone, issueAfter.MilestoneID) |
| 120 | + assert.Equal(t, int64(0), int64(issueAfter.DeadlineUnix)) |
| 121 | + assert.Equal(t, body, issueAfter.Content) |
| 122 | + assert.Equal(t, title, issueAfter.Title) |
| 123 | +} |
0 commit comments