handlers_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package search
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/bus"
  5. m "github.com/grafana/grafana/pkg/models"
  6. . "github.com/smartystreets/goconvey/convey"
  7. )
  8. func TestSearch(t *testing.T) {
  9. Convey("Given search query", t, func() {
  10. query := Query{Limit: 2000, SignedInUser: &m.SignedInUser{IsGrafanaAdmin: true}}
  11. ss := &SearchService{}
  12. bus.AddHandler("test", func(query *FindPersistedDashboardsQuery) error {
  13. query.Result = HitList{
  14. &Hit{Id: 16, Title: "CCAA", Type: "dash-db", Tags: []string{"BB", "AA"}},
  15. &Hit{Id: 10, Title: "AABB", Type: "dash-db", Tags: []string{"CC", "AA"}},
  16. &Hit{Id: 15, Title: "BBAA", Type: "dash-db", Tags: []string{"EE", "AA", "BB"}},
  17. &Hit{Id: 25, Title: "bbAAa", Type: "dash-db", Tags: []string{"EE", "AA", "BB"}},
  18. &Hit{Id: 17, Title: "FOLDER", Type: "dash-folder"},
  19. }
  20. return nil
  21. })
  22. bus.AddHandler("test", func(query *m.GetUserStarsQuery) error {
  23. query.Result = map[int64]bool{10: true, 12: true}
  24. return nil
  25. })
  26. bus.AddHandler("test", func(query *m.GetSignedInUserQuery) error {
  27. query.Result = &m.SignedInUser{IsGrafanaAdmin: true}
  28. return nil
  29. })
  30. Convey("That is empty", func() {
  31. err := ss.searchHandler(&query)
  32. So(err, ShouldBeNil)
  33. Convey("should return sorted results", func() {
  34. So(query.Result[0].Title, ShouldEqual, "FOLDER")
  35. So(query.Result[1].Title, ShouldEqual, "AABB")
  36. So(query.Result[2].Title, ShouldEqual, "BBAA")
  37. So(query.Result[3].Title, ShouldEqual, "bbAAa")
  38. So(query.Result[4].Title, ShouldEqual, "CCAA")
  39. })
  40. Convey("should return sorted tags", func() {
  41. So(query.Result[3].Tags[0], ShouldEqual, "AA")
  42. So(query.Result[3].Tags[1], ShouldEqual, "BB")
  43. So(query.Result[3].Tags[2], ShouldEqual, "EE")
  44. })
  45. })
  46. })
  47. }