work in progess: action handling; start with simple test

This commit is contained in:
Helmut Merz 2023-07-07 11:41:25 +02:00
parent 4ad87d635c
commit 4c174217d1

View file

@ -4,7 +4,10 @@ import (
"fmt" "fmt"
tbase "testing" tbase "testing"
"git.sr.ht/~cco/go-scopes/config"
"git.sr.ht/~cco/go-scopes/lib" "git.sr.ht/~cco/go-scopes/lib"
"git.sr.ht/~cco/go-scopes/lib/action"
"git.sr.ht/~cco/go-scopes/lib/context"
"git.sr.ht/~cco/go-scopes/lib/message" "git.sr.ht/~cco/go-scopes/lib/message"
"git.sr.ht/~cco/go-scopes/testing" "git.sr.ht/~cco/go-scopes/testing"
) )
@ -14,6 +17,7 @@ func TestUnit(tb *tbase.T) {
t.Run("address", AddressTest) t.Run("address", AddressTest)
t.Run("message", MessageTest) t.Run("message", MessageTest)
t.Run("payload", PayloadTest) t.Run("payload", PayloadTest)
t.Run("action", ActionTest)
} }
func AddressTest(t *testing.T) { func AddressTest(t *testing.T) {
@ -57,3 +61,17 @@ func PayloadTest(t *testing.T) {
pl3 := message.PayloadFromJson[map[string]any](`{"activity": "development"}`) pl3 := message.PayloadFromJson[map[string]any](`{"activity": "development"}`)
t.AssertEqual(fmt.Sprint(pl3), `{"activity":"development"}`) t.AssertEqual(fmt.Sprint(pl3), `{"activity":"development"}`)
} }
func ActionTest(t *testing.T) {
var result struct{ data string }
var hdlr lib.ActionHandler = func(act lib.Action) bool {
result.data = "done"
return true
}
cfg := config.Base("testing", nil).
AddAction("doit", action.Base(hdlr))
ctx := context.AppContext(cfg)
msg := message.SimpleMessage("doit")
lib.HandleMsg(ctx, msg)
t.AssertEqual(result.data, "done")
}