code.gitea.io/gitea@v1.22.3/models/issues/stopwatch_test.go (about) 1 // Copyright 2020 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package issues_test 5 6 import ( 7 "testing" 8 9 "code.gitea.io/gitea/models/db" 10 issues_model "code.gitea.io/gitea/models/issues" 11 "code.gitea.io/gitea/models/unittest" 12 user_model "code.gitea.io/gitea/models/user" 13 "code.gitea.io/gitea/modules/timeutil" 14 15 "github.com/stretchr/testify/assert" 16 ) 17 18 func TestCancelStopwatch(t *testing.T) { 19 assert.NoError(t, unittest.PrepareTestDatabase()) 20 21 user1, err := user_model.GetUserByID(db.DefaultContext, 1) 22 assert.NoError(t, err) 23 24 issue1, err := issues_model.GetIssueByID(db.DefaultContext, 1) 25 assert.NoError(t, err) 26 issue2, err := issues_model.GetIssueByID(db.DefaultContext, 2) 27 assert.NoError(t, err) 28 29 err = issues_model.CancelStopwatch(db.DefaultContext, user1, issue1) 30 assert.NoError(t, err) 31 unittest.AssertNotExistsBean(t, &issues_model.Stopwatch{UserID: user1.ID, IssueID: issue1.ID}) 32 33 _ = unittest.AssertExistsAndLoadBean(t, &issues_model.Comment{Type: issues_model.CommentTypeCancelTracking, PosterID: user1.ID, IssueID: issue1.ID}) 34 35 assert.Nil(t, issues_model.CancelStopwatch(db.DefaultContext, user1, issue2)) 36 } 37 38 func TestStopwatchExists(t *testing.T) { 39 assert.NoError(t, unittest.PrepareTestDatabase()) 40 41 assert.True(t, issues_model.StopwatchExists(db.DefaultContext, 1, 1)) 42 assert.False(t, issues_model.StopwatchExists(db.DefaultContext, 1, 2)) 43 } 44 45 func TestHasUserStopwatch(t *testing.T) { 46 assert.NoError(t, unittest.PrepareTestDatabase()) 47 48 exists, sw, _, err := issues_model.HasUserStopwatch(db.DefaultContext, 1) 49 assert.NoError(t, err) 50 assert.True(t, exists) 51 assert.Equal(t, int64(1), sw.ID) 52 53 exists, _, _, err = issues_model.HasUserStopwatch(db.DefaultContext, 3) 54 assert.NoError(t, err) 55 assert.False(t, exists) 56 } 57 58 func TestCreateOrStopIssueStopwatch(t *testing.T) { 59 assert.NoError(t, unittest.PrepareTestDatabase()) 60 61 user2, err := user_model.GetUserByID(db.DefaultContext, 2) 62 assert.NoError(t, err) 63 org3, err := user_model.GetUserByID(db.DefaultContext, 3) 64 assert.NoError(t, err) 65 66 issue1, err := issues_model.GetIssueByID(db.DefaultContext, 1) 67 assert.NoError(t, err) 68 issue2, err := issues_model.GetIssueByID(db.DefaultContext, 2) 69 assert.NoError(t, err) 70 71 assert.NoError(t, issues_model.CreateOrStopIssueStopwatch(db.DefaultContext, org3, issue1)) 72 sw := unittest.AssertExistsAndLoadBean(t, &issues_model.Stopwatch{UserID: 3, IssueID: 1}) 73 assert.LessOrEqual(t, sw.CreatedUnix, timeutil.TimeStampNow()) 74 75 assert.NoError(t, issues_model.CreateOrStopIssueStopwatch(db.DefaultContext, user2, issue2)) 76 unittest.AssertNotExistsBean(t, &issues_model.Stopwatch{UserID: 2, IssueID: 2}) 77 unittest.AssertExistsAndLoadBean(t, &issues_model.TrackedTime{UserID: 2, IssueID: 2}) 78 }