diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2020-01-30 11:49:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-30 11:49:02 +0800 |
commit | 0c5e2e2e4cf1b1d28f697f92787a199fb6179e32 (patch) | |
tree | d6c790b9629dafad28b4eb1ce460cb18ad5f07d3 /models | |
parent | 158b7163872e900984b4fd64e81a8a316e281bc8 (diff) | |
download | gitea-0c5e2e2e4cf1b1d28f697f92787a199fb6179e32.tar.gz gitea-0c5e2e2e4cf1b1d28f697f92787a199fb6179e32.zip |
Fix milestone API state parameter unhandled (#10049) (#10053)
* Fix milestone API state parameter unhandled (#10049)
* Fix milestone API state parameter unhandled
* Fix test
* Fix test
Diffstat (limited to 'models')
-rw-r--r-- | models/issue_milestone.go | 27 | ||||
-rw-r--r-- | models/issue_milestone_test.go | 5 |
2 files changed, 27 insertions, 5 deletions
diff --git a/models/issue_milestone.go b/models/issue_milestone.go index df2f30fb3b..447d0b7f46 100644 --- a/models/issue_milestone.go +++ b/models/issue_milestone.go @@ -253,12 +253,33 @@ func updateMilestone(e Engine, m *Milestone) error { } // UpdateMilestone updates information of given milestone. -func UpdateMilestone(m *Milestone) error { - if err := updateMilestone(x, m); err != nil { +func UpdateMilestone(m *Milestone, oldIsClosed bool) error { + sess := x.NewSession() + defer sess.Close() + if err := sess.Begin(); err != nil { + return err + } + + if m.IsClosed && !oldIsClosed { + m.ClosedDateUnix = timeutil.TimeStampNow() + } + + if err := updateMilestone(sess, m); err != nil { return err } - return updateMilestoneCompleteness(x, m.ID) + if err := updateMilestoneCompleteness(sess, m.ID); err != nil { + return err + } + + // if IsClosed changed, update milestone numbers of repository + if oldIsClosed != m.IsClosed { + if err := updateRepoMilestoneNum(sess, m.RepoID); err != nil { + return err + } + } + + return sess.Commit() } func updateMilestoneCompleteness(e Engine, milestoneID int64) error { diff --git a/models/issue_milestone_test.go b/models/issue_milestone_test.go index 6f8548ec67..42445dafeb 100644 --- a/models/issue_milestone_test.go +++ b/models/issue_milestone_test.go @@ -160,8 +160,9 @@ func TestUpdateMilestone(t *testing.T) { milestone := AssertExistsAndLoadBean(t, &Milestone{ID: 1}).(*Milestone) milestone.Name = "newMilestoneName" milestone.Content = "newMilestoneContent" - assert.NoError(t, UpdateMilestone(milestone)) - AssertExistsAndLoadBean(t, milestone) + assert.NoError(t, UpdateMilestone(milestone, milestone.IsClosed)) + milestone = AssertExistsAndLoadBean(t, &Milestone{ID: 1}).(*Milestone) + assert.EqualValues(t, "newMilestoneName", milestone.Name) CheckConsistencyFor(t, &Milestone{}) } |