diff --git a/models/organization/org_worktime.go b/models/organization/org_worktime.go index 0201a50188b5e..fea37cbdf89a3 100644 --- a/models/organization/org_worktime.go +++ b/models/organization/org_worktime.go @@ -24,8 +24,7 @@ func GetWorktimeByRepos(org *Organization, unitFrom, unixTo int64) (results []Wo And(builder.Eq{"tracked_time.deleted": false}). And(builder.Gte{"tracked_time.created_unix": unitFrom}). And(builder.Lte{"tracked_time.created_unix": unixTo}). - GroupBy("repository.id"). - OrderBy("repository.name"). + GroupBy("repository.name"). Find(&results) return results, err } @@ -49,7 +48,7 @@ func GetWorktimeByMilestones(org *Organization, unitFrom, unixTo int64) (results And(builder.Eq{"tracked_time.deleted": false}). And(builder.Gte{"tracked_time.created_unix": unitFrom}). And(builder.Lte{"tracked_time.created_unix": unixTo}). - GroupBy("repository.id, milestone.id"). + GroupBy("repository.name, milestone.name, milestone.id"). OrderBy("repository.name, milestone.deadline_unix, milestone.id"). Find(&results) // Show only the first RepoName, for nicer output. @@ -71,16 +70,16 @@ type WorktimeSumByMembers struct { func GetWorktimeByMembers(org *Organization, unitFrom, unixTo int64) (results []WorktimeSumByMembers, err error) { err = db.GetEngine(db.DefaultContext). - Select("user.name AS user_name, SUM(tracked_time.time) AS sum_time"). + Select("`user`.name AS user_name, SUM(tracked_time.time) AS sum_time"). Table("tracked_time"). Join("INNER", "issue", "tracked_time.issue_id = issue.id"). Join("INNER", "repository", "issue.repo_id = repository.id"). - Join("INNER", "user", "tracked_time.user_id = user.id"). + Join("INNER", "`user`", "tracked_time.user_id = `user`.id"). Where(builder.Eq{"repository.owner_id": org.ID}). And(builder.Eq{"tracked_time.deleted": false}). And(builder.Gte{"tracked_time.created_unix": unitFrom}). And(builder.Lte{"tracked_time.created_unix": unixTo}). - GroupBy("user.id"). + GroupBy("`user`.name"). OrderBy("sum_time DESC"). Find(&results) return results, err diff --git a/tests/integration/org_worktime_test.go b/tests/integration/org_worktime_test.go index 90306d8b947fa..fb5216be8d318 100644 --- a/tests/integration/org_worktime_test.go +++ b/tests/integration/org_worktime_test.go @@ -11,6 +11,7 @@ import ( "code.gitea.io/gitea/models/unittest" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // TestTimesByRepos tests TimesByRepos functionality @@ -191,10 +192,11 @@ func testTimesByMilestones(t *testing.T) { for _, kase := range kases { t.Run(kase.name, func(t *testing.T) { org, err := organization.GetOrgByID(db.DefaultContext, kase.orgname) - assert.NoError(t, err) + require.NoError(t, err) results, err := organization.GetWorktimeByMilestones(org, kase.unixfrom, kase.unixto) - assert.NoError(t, err) - assert.Equal(t, kase.expected, results) + if assert.NoError(t, err) { + assert.Equal(t, kase.expected, results) + } }) } } @@ -285,7 +287,7 @@ func testTimesByMembers(t *testing.T) { func TestOrgWorktime(t *testing.T) { // we need to run these tests in integration test because there are complex SQL queries assert.NoError(t, unittest.PrepareTestDatabase()) - testTimesByRepos(t) - testTimesByMilestones(t) - testTimesByMembers(t) + t.Run("ByRepos", testTimesByRepos) + t.Run("ByMilestones", testTimesByMilestones) + t.Run("ByMembers", testTimesByMembers) }