@@ -18,6 +18,7 @@ import (
1818 "code.gitea.io/gitea/modules/timeutil"
1919
2020 "github.com/stretchr/testify/assert"
21+ "github.com/stretchr/testify/require"
2122)
2223
2324func TestLabel_ToLabel (t * testing.T ) {
@@ -83,3 +84,43 @@ func TestToStopWatchesRespectsPermissions(t *testing.T) {
8384 assert .Len (t , visibleAdmin , 2 )
8485 assert .ElementsMatch (t , []string {"repo1" , "repo3" }, []string {visibleAdmin [0 ].RepoName , visibleAdmin [1 ].RepoName })
8586}
87+
88+ func TestToTrackedTime (t * testing.T ) {
89+ require .NoError (t , unittest .PrepareTestDatabase ())
90+
91+ ctx := t .Context ()
92+ publicIssue := unittest .AssertExistsAndLoadBean (t , & issues_model.Issue {RepoID : 1 })
93+ privateIssue := unittest .AssertExistsAndLoadBean (t , & issues_model.Issue {RepoID : 3 })
94+ regularUser := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 5 })
95+ adminUser := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 1 })
96+
97+ publicTrackedTime := & issues_model.TrackedTime {IssueID : publicIssue .ID , UserID : regularUser .ID , Time : 3600 }
98+ privateTrackedTime := & issues_model.TrackedTime {IssueID : privateIssue .ID , UserID : regularUser .ID , Time : 1800 }
99+ require .NoError (t , db .Insert (ctx , publicTrackedTime ))
100+ require .NoError (t , db .Insert (ctx , privateTrackedTime ))
101+
102+ t .Run ("NilIssues" , func (t * testing.T ) {
103+ list := ToTrackedTimeList (ctx , regularUser , issues_model.TrackedTimeList {publicTrackedTime , privateTrackedTime })
104+ assert .Empty (t , list )
105+ })
106+
107+ t .Run ("NilRepo" , func (t * testing.T ) {
108+ badTrackedTime := & issues_model.TrackedTime {Issue : & issues_model.Issue {RepoID : 999999 }}
109+ visible := ToTrackedTimeList (ctx , regularUser , issues_model.TrackedTimeList {badTrackedTime })
110+ assert .Empty (t , visible )
111+ })
112+
113+ trackedTimes := issues_model.TrackedTimeList {publicTrackedTime , privateTrackedTime }
114+ require .NoError (t , trackedTimes .LoadAttributes (ctx ))
115+
116+ t .Run ("ToRegularUser" , func (t * testing.T ) {
117+ list := ToTrackedTimeList (ctx , regularUser , trackedTimes )
118+ require .Len (t , list , 1 )
119+ assert .Equal (t , "repo1" , list [0 ].Issue .Repo .Name )
120+ })
121+ t .Run ("ToAdminUser" , func (t * testing.T ) {
122+ list := ToTrackedTimeList (ctx , adminUser , trackedTimes )
123+ require .Len (t , list , 2 )
124+ assert .ElementsMatch (t , []string {"repo1" , "repo3" }, []string {list [0 ].Issue .Repo .Name , list [1 ].Issue .Repo .Name })
125+ })
126+ }
0 commit comments