bus_test.go 1.2 KB

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