Fix issue updated_unix bug (#2204)
This commit is contained in:
parent
5f37944dff
commit
a27863b6d1
5 changed files with 73 additions and 0 deletions
|
@ -580,6 +580,7 @@ func (issue *Issue) ReadBy(userID int64) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateIssueCols(e Engine, issue *Issue, cols ...string) 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 {
|
if _, err := e.Id(issue.ID).Cols(cols...).Update(issue); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -399,7 +399,11 @@ func createComment(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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.
|
// Notify watchers for whatever action comes in, ignore if no action type.
|
||||||
|
|
41
models/issue_comment_test.go
Normal file
41
models/issue_comment_test.go
Normal file
|
@ -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)
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ package models
|
||||||
import (
|
import (
|
||||||
"sort"
|
"sort"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
@ -146,3 +147,23 @@ func TestIssue_ClearLabels(t *testing.T) {
|
||||||
AssertNotExistsBean(t, &IssueLabel{IssueID: test.issueID})
|
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)
|
||||||
|
}
|
||||||
|
|
|
@ -92,3 +92,9 @@ func AssertSuccessfulInsert(t *testing.T, beans ...interface{}) {
|
||||||
func AssertCount(t *testing.T, bean interface{}, expected interface{}) {
|
func AssertCount(t *testing.T, bean interface{}, expected interface{}) {
|
||||||
assert.EqualValues(t, expected, GetCount(t, bean))
|
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)
|
||||||
|
}
|
||||||
|
|
Reference in a new issue