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 { | ||||
| 	cols = append(cols, "updated_unix") | ||||
| 	if _, err := e.Id(issue.ID).Cols(cols...).Update(issue); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  |  | |||
|  | @ -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.
 | ||||
|  |  | |||
							
								
								
									
										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 ( | ||||
| 	"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) | ||||
| } | ||||
|  |  | |||
|  | @ -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) | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue