Просмотр исходного кода

Sort tags in search results, Closes #2091

Torkel Ödegaard 10 лет назад
Родитель
Сommit
2446168356
2 измененных файлов с 58 добавлено и 2 удалено
  1. 9 2
      pkg/search/handlers.go
  2. 49 0
      pkg/search/handlers_test.go

+ 9 - 2
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
 }

+ 49 - 0
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")
+			})
+		})
+
+	})
+}