summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEthan Koenig <etk39@cornell.edu>2017-07-26 18:20:38 -0700
committerLunny Xiao <xiaolunwen@gmail.com>2017-07-27 09:20:38 +0800
commita27863b6d15026cf36b164707331fd59ffb68931 (patch)
tree82bd393e796d4330213599b492b40b0100288c8a
parent5f37944dff7f8e48b3c5ce27bd1b77907b71f092 (diff)
downloadgitea-a27863b6d15026cf36b164707331fd59ffb68931.tar.gz
gitea-a27863b6d15026cf36b164707331fd59ffb68931.zip
Fix issue updated_unix bug (#2204)
-rw-r--r--models/issue.go1
-rw-r--r--models/issue_comment.go4
-rw-r--r--models/issue_comment_test.go41
-rw-r--r--models/issue_test.go21
-rw-r--r--models/unit_tests.go6
5 files changed, 73 insertions, 0 deletions
diff --git a/models/issue.go b/models/issue.go
index a83cfd6504..d40b81eb32 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -580,6 +580,7 @@ func (issue *Issue) ReadBy(userID int64) error {
}
func updateIssueCols(e Engine, issue *Issue, cols ...string) error {
+ cols = append(cols, "updated_unix")
if _, err := e.Id(issue.ID).Cols(cols...).Update(issue); err != nil {
return err
}
diff --git a/models/issue_comment.go b/models/issue_comment.go
index 326676ecfc..753e79b3d3 100644
--- a/models/issue_comment.go
+++ b/models/issue_comment.go
@@ -399,7 +399,11 @@ func createComment(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err
if err != nil {
return nil, err
}
+ }
+ // update the issue's updated_unix column
+ if err = updateIssueCols(e, opts.Issue); err != nil {
+ return nil, err
}
// Notify watchers for whatever action comes in, ignore if no action type.
diff --git a/models/issue_comment_test.go b/models/issue_comment_test.go
new file mode 100644
index 0000000000..86fc32a8d3
--- /dev/null
+++ b/models/issue_comment_test.go
@@ -0,0 +1,41 @@
+// Copyright 2017 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package models
+
+import (
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestCreateComment(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+
+ issue := AssertExistsAndLoadBean(t, &Issue{}).(*Issue)
+ repo := AssertExistsAndLoadBean(t, &Repository{ID: issue.RepoID}).(*Repository)
+ doer := AssertExistsAndLoadBean(t, &User{ID: repo.OwnerID}).(*User)
+
+ now := time.Now().Unix()
+ comment, err := CreateComment(&CreateCommentOptions{
+ Type: CommentTypeComment,
+ Doer: doer,
+ Repo: repo,
+ Issue: issue,
+ Content: "Hello",
+ })
+ assert.NoError(t, err)
+ then := time.Now().Unix()
+
+ assert.EqualValues(t, CommentTypeComment, comment.Type)
+ assert.EqualValues(t, "Hello", comment.Content)
+ assert.EqualValues(t, issue.ID, comment.IssueID)
+ assert.EqualValues(t, doer.ID, comment.PosterID)
+ AssertInt64InRange(t, now, then, comment.CreatedUnix)
+ AssertExistsAndLoadBean(t, comment) // assert actually added to DB
+
+ updatedIssue := AssertExistsAndLoadBean(t, &Issue{ID: issue.ID}).(*Issue)
+ AssertInt64InRange(t, now, then, updatedIssue.UpdatedUnix)
+}
diff --git a/models/issue_test.go b/models/issue_test.go
index d135b534df..8a8ccce459 100644
--- a/models/issue_test.go
+++ b/models/issue_test.go
@@ -7,6 +7,7 @@ package models
import (
"sort"
"testing"
+ "time"
"github.com/stretchr/testify/assert"
)
@@ -146,3 +147,23 @@ func TestIssue_ClearLabels(t *testing.T) {
AssertNotExistsBean(t, &IssueLabel{IssueID: test.issueID})
}
}
+
+func TestUpdateIssueCols(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+ issue := AssertExistsAndLoadBean(t, &Issue{}).(*Issue)
+
+ const newTitle = "New Title for unit test"
+ issue.Title = newTitle
+
+ prevContent := issue.Content
+ issue.Content = "This should have no effect"
+
+ now := time.Now().Unix()
+ assert.NoError(t, UpdateIssueCols(issue, "name"))
+ then := time.Now().Unix()
+
+ updatedIssue := AssertExistsAndLoadBean(t, &Issue{ID: issue.ID}).(*Issue)
+ assert.EqualValues(t, newTitle, updatedIssue.Title)
+ assert.EqualValues(t, prevContent, updatedIssue.Content)
+ AssertInt64InRange(t, now, then, updatedIssue.UpdatedUnix)
+}
diff --git a/models/unit_tests.go b/models/unit_tests.go
index 774fb883c6..b4b36ba6b7 100644
--- a/models/unit_tests.go
+++ b/models/unit_tests.go
@@ -92,3 +92,9 @@ func AssertSuccessfulInsert(t *testing.T, beans ...interface{}) {
func AssertCount(t *testing.T, bean interface{}, expected interface{}) {
assert.EqualValues(t, expected, GetCount(t, bean))
}
+
+// AssertInt64InRange assert value is in range [low, high]
+func AssertInt64InRange(t *testing.T, low, high, value int64) {
+ assert.True(t, value >= low && value <= high,
+ "Expected value in range [%d, %d], found %d", low, high, value)
+}