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) | ||||||
|  | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue