From db3c7aa8b04e828fafdf10bcfd5bde8cf19e6f10 Mon Sep 17 00:00:00 2001 From: kolaente Date: Mon, 3 Apr 2023 15:36:47 +0200 Subject: [PATCH] fix: make sure projects are correctly sorted --- pkg/models/project.go | 15 ++------------- pkg/models/project_test.go | 8 ++++++-- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/pkg/models/project.go b/pkg/models/project.go index 2c648242686..5cf9ee10796 100644 --- a/pkg/models/project.go +++ b/pkg/models/project.go @@ -182,12 +182,6 @@ func (p *Project) ReadAll(s *xorm.Session, a web.Auth, search string, page int, return nil, 0, 0, err } - // FIXME: I wonder if we could get rid of this extra loop? - allProjects := make(map[int64]*Project, len(prs)) - for _, p := range prs { - allProjects[p.ID] = p - } - ///////////////// // Saved Filters @@ -197,7 +191,7 @@ func (p *Project) ReadAll(s *xorm.Session, a web.Auth, search string, page int, } if savedFiltersProject != nil { - allProjects[savedFiltersProject.ID] = savedFiltersProject + prs = append(prs, savedFiltersProject) } ///////////////// @@ -210,12 +204,7 @@ func (p *Project) ReadAll(s *xorm.Session, a web.Auth, search string, page int, ////////////////////////// // Putting it all together - projectsResult := []*Project{} - for _, p := range allProjects { - projectsResult = append(projectsResult, p) - } - - return projectsResult, resultCount, totalItems, err + return prs, resultCount, totalItems, err } // ReadOne gets one project by its ID diff --git a/pkg/models/project_test.go b/pkg/models/project_test.go index f40fd5fe20f..c051c194b66 100644 --- a/pkg/models/project_test.go +++ b/pkg/models/project_test.go @@ -319,10 +319,12 @@ func TestProject_ReadAll(t *testing.T) { assert.NoError(t, err) assert.Equal(t, reflect.TypeOf(projects3).Kind(), reflect.Slice) ls := projects3.([]*Project) - assert.Equal(t, 23, len(ls)) + assert.Equal(t, 25, len(ls)) assert.Equal(t, int64(3), ls[0].ID) // Project 3 has a position of 1 and should be sorted first assert.Equal(t, int64(1), ls[1].ID) assert.Equal(t, int64(6), ls[2].ID) + assert.Equal(t, int64(-1), ls[23].ID) + assert.Equal(t, int64(-3), ls[24].ID) _ = s.Close() }) t.Run("projects for nonexistant user", func(t *testing.T) { @@ -344,8 +346,10 @@ func TestProject_ReadAll(t *testing.T) { assert.NoError(t, err) ls := projects3.([]*Project) - assert.Equal(t, 1, len(ls)) + assert.Equal(t, 3, len(ls)) assert.Equal(t, int64(10), ls[0].ID) + assert.Equal(t, int64(-1), ls[1].ID) + assert.Equal(t, int64(-3), ls[2].ID) _ = s.Close() }) }