3
0
corteza/pkg/messagebus/settings_test.go
2021-04-26 08:54:03 +02:00

58 lines
1.3 KiB
Go

package messagebus
import (
"encoding/json"
"testing"
"time"
"github.com/stretchr/testify/require"
)
func Test_settingsUnmarshal(t *testing.T) {
var (
tcc = []struct {
name string
payload string
err error
expect QueueSettingsMeta
}{
{
name: "settings defaults",
payload: `{}`,
err: nil,
expect: QueueSettingsMeta{PollDelay: nil, DispatchEvents: false},
},
{
name: "settings enabled dispatch events",
payload: `{"poll_delay": "7s", "dispatch_events": true}`,
err: nil,
expect: QueueSettingsMeta{PollDelay: makeDelay(time.Second * 7), DispatchEvents: true},
},
{
name: "settings disabled dispatch events",
payload: `{"poll_delay": "7s", "dispatch_events": false}`,
err: nil,
expect: QueueSettingsMeta{PollDelay: makeDelay(time.Second * 7), DispatchEvents: false},
},
{
name: "settings invalid poll delay",
payload: `{"poll_delay": "7seconds", "dispatch_events": false}`,
err: nil,
expect: QueueSettingsMeta{PollDelay: nil, DispatchEvents: false},
},
}
)
for _, tc := range tcc {
t.Run(tc.name, func(t *testing.T) {
req := require.New(t)
s := &QueueSettingsMeta{}
err := json.Unmarshal([]byte(tc.payload), s)
req.Equal(tc.err, err)
req.Equal(tc.expect, *s)
})
}
}