From 2446168356d6b6b4d16087ad7517ba0a15b588ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Tue, 2 Jun 2015 09:00:17 +0200 Subject: [PATCH] Sort tags in search results, Closes #2091 --- pkg/search/handlers.go | 11 +++++++-- pkg/search/handlers_test.go | 49 +++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 pkg/search/handlers_test.go diff --git a/pkg/search/handlers.go b/pkg/search/handlers.go index 874b85994ca..d0f9ae56833 100644 --- a/pkg/search/handlers.go +++ b/pkg/search/handlers.go @@ -55,12 +55,19 @@ func searchHandler(query *Query) error { hits = append(hits, jsonHits...) } - sort.Sort(hits) - + // add isStarred info if err := setIsStarredFlagOnSearchResults(query.UserId, hits); err != nil { return err } + // sort main result array + sort.Sort(hits) + + // sort tags + for _, hit := range hits { + sort.Strings(hit.Tags) + } + query.Result = hits return nil } diff --git a/pkg/search/handlers_test.go b/pkg/search/handlers_test.go new file mode 100644 index 00000000000..ebfade4dc06 --- /dev/null +++ b/pkg/search/handlers_test.go @@ -0,0 +1,49 @@ +package search + +import ( + "testing" + + "github.com/grafana/grafana/pkg/bus" + m "github.com/grafana/grafana/pkg/models" + . "github.com/smartystreets/goconvey/convey" +) + +func TestSearch(t *testing.T) { + + Convey("Given search query", t, func() { + jsonDashIndex = NewJsonDashIndex("../../public/dashboards/") + query := Query{} + + bus.AddHandler("test", func(query *FindPersistedDashboardsQuery) error { + query.Result = HitList{ + &Hit{Id: 16, Title: "CCAA", Tags: []string{"BB", "AA"}}, + &Hit{Id: 10, Title: "AABB", Tags: []string{"CC", "AA"}}, + &Hit{Id: 15, Title: "BBAA", Tags: []string{"EE", "AA", "BB"}}, + } + return nil + }) + + bus.AddHandler("test", func(query *m.GetUserStarsQuery) error { + query.Result = map[int64]bool{10: true, 12: true} + return nil + }) + + Convey("That is empty", func() { + err := searchHandler(&query) + So(err, ShouldBeNil) + + Convey("should return sorted results", func() { + So(query.Result[0].Title, ShouldEqual, "AABB") + So(query.Result[1].Title, ShouldEqual, "BBAA") + So(query.Result[2].Title, ShouldEqual, "CCAA") + }) + + Convey("should return sorted tags", func() { + So(query.Result[1].Tags[0], ShouldEqual, "AA") + So(query.Result[1].Tags[1], ShouldEqual, "BB") + So(query.Result[1].Tags[2], ShouldEqual, "EE") + }) + }) + + }) +}