lotus/paychmgr/msglistener_test.go
hannahhoward 05c11531b1 feat(paych): convert paych actor
build abstraction for paych actor and switch to using it in payment channel manager and state
predicates
2020-09-15 21:06:04 -07:00

95 lines
1.7 KiB
Go

package paychmgr
import (
"testing"
"github.com/ipfs/go-cid"
"github.com/stretchr/testify/require"
"golang.org/x/xerrors"
)
func testCids() []cid.Cid {
c1, _ := cid.Decode("QmdmGQmRgRjazArukTbsXuuxmSHsMCcRYPAZoGhd6e3MuS")
c2, _ := cid.Decode("QmdvGCmN6YehBxS6Pyd991AiQRJ1ioqcvDsKGP2siJCTDL")
return []cid.Cid{c1, c2}
}
func TestMsgListener(t *testing.T) {
ml := newMsgListeners()
done := false
experr := xerrors.Errorf("some err")
cids := testCids()
ml.onMsgComplete(cids[0], func(err error) {
require.Equal(t, experr, err)
done = true
})
ml.fireMsgComplete(cids[0], experr)
if !done {
t.Fatal("failed to fire event")
}
}
func TestMsgListenerNilErr(t *testing.T) {
ml := newMsgListeners()
done := false
cids := testCids()
ml.onMsgComplete(cids[0], func(err error) {
require.Nil(t, err)
done = true
})
ml.fireMsgComplete(cids[0], nil)
if !done {
t.Fatal("failed to fire event")
}
}
func TestMsgListenerUnsub(t *testing.T) {
ml := newMsgListeners()
done := false
experr := xerrors.Errorf("some err")
cids := testCids()
unsub := ml.onMsgComplete(cids[0], func(err error) {
t.Fatal("should not call unsubscribed listener")
})
ml.onMsgComplete(cids[0], func(err error) {
require.Equal(t, experr, err)
done = true
})
unsub()
ml.fireMsgComplete(cids[0], experr)
if !done {
t.Fatal("failed to fire event")
}
}
func TestMsgListenerMulti(t *testing.T) {
ml := newMsgListeners()
count := 0
cids := testCids()
ml.onMsgComplete(cids[0], func(err error) {
count++
})
ml.onMsgComplete(cids[0], func(err error) {
count++
})
ml.onMsgComplete(cids[1], func(err error) {
count++
})
ml.fireMsgComplete(cids[0], nil)
require.Equal(t, 2, count)
ml.fireMsgComplete(cids[1], nil)
require.Equal(t, 3, count)
}