handlers_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. jsonDashIndex = NewJsonDashIndex("../../../public/dashboards/")
  11. query := Query{Limit: 2000}
  12. bus.AddHandler("test", func(query *FindPersistedDashboardsQuery) error {
  13. query.Result = HitList{
  14. &Hit{Id: 16, Title: "CCAA", Tags: []string{"BB", "AA"}},
  15. &Hit{Id: 10, Title: "AABB", Tags: []string{"CC", "AA"}},
  16. &Hit{Id: 15, Title: "BBAA", Tags: []string{"EE", "AA", "BB"}},
  17. }
  18. return nil
  19. })
  20. bus.AddHandler("test", func(query *m.GetUserStarsQuery) error {
  21. query.Result = map[int64]bool{10: true, 12: true}
  22. return nil
  23. })
  24. Convey("That is empty", func() {
  25. err := searchHandler(&query)
  26. So(err, ShouldBeNil)
  27. Convey("should return sorted results", func() {
  28. So(query.Result[0].Title, ShouldEqual, "AABB")
  29. So(query.Result[1].Title, ShouldEqual, "BBAA")
  30. So(query.Result[2].Title, ShouldEqual, "CCAA")
  31. })
  32. Convey("should return sorted tags", func() {
  33. So(query.Result[1].Tags[0], ShouldEqual, "AA")
  34. So(query.Result[1].Tags[1], ShouldEqual, "BB")
  35. So(query.Result[1].Tags[2], ShouldEqual, "EE")
  36. })
  37. })
  38. Convey("That filters by tag", func() {
  39. query.Tags = []string{"BB", "AA"}
  40. err := searchHandler(&query)
  41. So(err, ShouldBeNil)
  42. Convey("should return correct results", func() {
  43. So(len(query.Result), ShouldEqual, 2)
  44. So(query.Result[0].Title, ShouldEqual, "BBAA")
  45. So(query.Result[1].Title, ShouldEqual, "CCAA")
  46. })
  47. })
  48. })
  49. }