2017-12-20 21:23:19 -08:00
|
|
|
package types
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestDecorate(t *testing.T) {
|
|
|
|
|
|
|
|
var calledDec1, calledDec2, calledHandler bool
|
2017-12-21 20:05:41 -08:00
|
|
|
dec1 := func(ctx Context, ms MultiStore, tx Tx, next Handler) Result {
|
2017-12-20 21:23:19 -08:00
|
|
|
calledDec1 = true
|
|
|
|
next(ctx, ms, tx)
|
|
|
|
return Result{}
|
|
|
|
}
|
|
|
|
|
2017-12-21 20:05:41 -08:00
|
|
|
dec2 := func(ctx Context, ms MultiStore, tx Tx, next Handler) Result {
|
2017-12-20 21:23:19 -08:00
|
|
|
calledDec2 = true
|
|
|
|
next(ctx, ms, tx)
|
|
|
|
return Result{}
|
|
|
|
}
|
|
|
|
|
2017-12-21 20:05:41 -08:00
|
|
|
handler := func(ctx Context, ms MultiStore, tx Tx) Result {
|
2017-12-20 21:23:19 -08:00
|
|
|
calledHandler = true
|
|
|
|
return Result{}
|
|
|
|
}
|
|
|
|
|
|
|
|
decoratedHandler := ChainDecorators(dec1, dec2).WithHandler(handler)
|
|
|
|
|
|
|
|
var ctx Context
|
2017-12-21 20:05:41 -08:00
|
|
|
var ms MultiStore
|
2017-12-20 21:23:19 -08:00
|
|
|
var tx Tx
|
|
|
|
decoratedHandler(ctx, ms, tx)
|
|
|
|
assert.True(t, calledDec1)
|
|
|
|
assert.True(t, calledDec2)
|
|
|
|
assert.True(t, calledHandler)
|
|
|
|
}
|