mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Fix issue updated_unix bug (#2204)
This commit is contained in:
		@@ -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 New Issue
	
	Block a user