// Copyright 2020 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" "code.gitea.io/gitea/modules/timeutil" "github.com/stretchr/testify/assert" ) func TestCancelStopwatch(t *testing.T) { assert.NoError(t, PrepareTestDatabase()) user1, err := GetUserByID(1) assert.NoError(t, err) issue1, err := GetIssueByID(1) assert.NoError(t, err) issue2, err := GetIssueByID(2) assert.NoError(t, err) err = CancelStopwatch(user1, issue1) assert.NoError(t, err) AssertNotExistsBean(t, &Stopwatch{UserID: user1.ID, IssueID: issue1.ID}) _ = AssertExistsAndLoadBean(t, &Comment{Type: CommentTypeCancelTracking, PosterID: user1.ID, IssueID: issue1.ID}) assert.Nil(t, CancelStopwatch(user1, issue2)) } func TestStopwatchExists(t *testing.T) { assert.NoError(t, PrepareTestDatabase()) assert.True(t, StopwatchExists(1, 1)) assert.False(t, StopwatchExists(1, 2)) } func TestHasUserStopwatch(t *testing.T) { assert.NoError(t, PrepareTestDatabase()) exists, sw, err := HasUserStopwatch(1) assert.NoError(t, err) assert.True(t, exists) assert.Equal(t, int64(1), sw.ID) exists, _, err = HasUserStopwatch(3) assert.NoError(t, err) assert.False(t, exists) } func TestCreateOrStopIssueStopwatch(t *testing.T) { assert.NoError(t, PrepareTestDatabase()) user2, err := GetUserByID(2) assert.NoError(t, err) user3, err := GetUserByID(3) assert.NoError(t, err) issue1, err := GetIssueByID(1) assert.NoError(t, err) issue2, err := GetIssueByID(2) assert.NoError(t, err) assert.NoError(t, CreateOrStopIssueStopwatch(user3, issue1)) sw := AssertExistsAndLoadBean(t, &Stopwatch{UserID: 3, IssueID: 1}).(*Stopwatch) assert.Equal(t, true, sw.CreatedUnix <= timeutil.TimeStampNow()) assert.NoError(t, CreateOrStopIssueStopwatch(user2, issue2)) AssertNotExistsBean(t, &Stopwatch{UserID: 2, IssueID: 2}) AssertExistsAndLoadBean(t, &TrackedTime{UserID: 2, IssueID: 2}) }