snapshot of https://github.com/ThreeDotsLabs/watermill.git (master, 2026-09-15; blobs > 131072B omitted)
Some checks failed
master / ci (push) Failing after 0s
Some checks failed
master / ci (push) Failing after 0s
This commit is contained in:
68
message/router/middleware/message_test.go
Normal file
68
message/router/middleware/message_test.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package middleware_test
|
||||
|
||||
import (
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type mockPublisherBehaviour int
|
||||
|
||||
const (
|
||||
BehaviourAlwaysOK mockPublisherBehaviour = iota + 1
|
||||
BehaviourAlwaysFail
|
||||
BehaviourAlwaysPanic
|
||||
)
|
||||
|
||||
var (
|
||||
errClosed = errors.New("closed")
|
||||
errFailed = errors.New("failed")
|
||||
errPanicked = errors.New("panicked")
|
||||
)
|
||||
|
||||
type mockPublisher struct {
|
||||
behaviour mockPublisherBehaviour
|
||||
closed bool
|
||||
|
||||
produced []*message.Message
|
||||
}
|
||||
|
||||
func (mp *mockPublisher) Publish(topic string, messages ...*message.Message) error {
|
||||
if mp.closed {
|
||||
return errClosed
|
||||
}
|
||||
|
||||
switch mp.behaviour {
|
||||
case BehaviourAlwaysOK:
|
||||
case BehaviourAlwaysFail:
|
||||
return errFailed
|
||||
case BehaviourAlwaysPanic:
|
||||
panic(errPanicked)
|
||||
}
|
||||
|
||||
mp.produced = append(mp.produced, messages...)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mp *mockPublisher) Close() error {
|
||||
mp.closed = true
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mp *mockPublisher) PopMessages() []*message.Message {
|
||||
defer func() { mp.produced = []*message.Message{} }()
|
||||
return mp.produced
|
||||
}
|
||||
|
||||
var handlerFuncAlwaysOKMessages = []*message.Message{
|
||||
message.NewMessage(watermill.NewUUID(), nil),
|
||||
message.NewMessage(watermill.NewUUID(), nil),
|
||||
}
|
||||
|
||||
func handlerFuncAlwaysOK(*message.Message) ([]*message.Message, error) {
|
||||
return handlerFuncAlwaysOKMessages, nil
|
||||
}
|
||||
|
||||
func handlerFuncAlwaysFailing(*message.Message) ([]*message.Message, error) {
|
||||
return nil, errFailed
|
||||
}
|
||||
Reference in New Issue
Block a user