bus_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package bus
  2. import (
  3. "errors"
  4. "fmt"
  5. "testing"
  6. )
  7. type TestQuery struct {
  8. Id int64
  9. Resp string
  10. }
  11. func TestQueryHandlerReturnsError(t *testing.T) {
  12. bus := New()
  13. bus.AddHandler(func(query *TestQuery) error {
  14. return errors.New("handler error")
  15. })
  16. err := bus.Dispatch(&TestQuery{})
  17. if err == nil {
  18. t.Fatal("Send query failed " + err.Error())
  19. } else {
  20. t.Log("Handler error received ok")
  21. }
  22. }
  23. func TestQueryHandlerReturn(t *testing.T) {
  24. bus := New()
  25. bus.AddHandler(func(q *TestQuery) error {
  26. q.Resp = "hello from handler"
  27. return nil
  28. })
  29. query := &TestQuery{}
  30. err := bus.Dispatch(query)
  31. if err != nil {
  32. t.Fatal("Send query failed " + err.Error())
  33. } else if query.Resp != "hello from handler" {
  34. t.Fatal("Failed to get response from handler")
  35. }
  36. }
  37. func TestEventListeners(t *testing.T) {
  38. bus := New()
  39. count := 0
  40. bus.AddEventListener(func(query *TestQuery) error {
  41. count += 1
  42. return nil
  43. })
  44. bus.AddEventListener(func(query *TestQuery) error {
  45. count += 10
  46. return nil
  47. })
  48. err := bus.Publish(&TestQuery{})
  49. if err != nil {
  50. t.Fatal("Publish event failed " + err.Error())
  51. } else if count != 11 {
  52. t.Fatal(fmt.Sprintf("Publish event failed, listeners called: %v, expected: %v", count, 11))
  53. }
  54. }