// © 2013 the CatBase Authors under the WTFPL. See AUTHORS for the list of authors. package leftpad import ( "testing" "github.com/stretchr/testify/assert" "github.com/velour/catbase/bot" "github.com/velour/catbase/bot/msg" "github.com/velour/catbase/bot/user" "github.com/velour/catbase/plugins/counter" ) func makeMessage(payload string) bot.Request { values := bot.ParseValues(leftpadRegex, payload) return bot.Request{ Kind: bot.Message, Values: values, Msg: msg.Message{ User: &user.User{Name: "tester"}, Channel: "test", Body: payload, }, } } func testMessage(p *LeftpadPlugin, body string) { if leftpadRegex.MatchString(body) { p.leftpadCmd(makeMessage(body)) } } func makePlugin(t *testing.T) (*LeftpadPlugin, *bot.MockBot) { mb := bot.NewMockBot() counter.New(mb) p := New(mb) assert.NotNil(t, p) p.config.Set("LeftPad.MaxLen", "0") return p, mb } func TestLeftpad(t *testing.T) { p, mb := makePlugin(t) testMessage(p, "leftpad test 8 test") if assert.Len(t, mb.Messages, 1) { assert.Contains(t, mb.Messages[0], "testtest") } } func TestNotCommand(t *testing.T) { p, mb := makePlugin(t) testMessage(p, "leftpad test fuck test") assert.Len(t, mb.Messages, 0) } func TestNoMaxLen(t *testing.T) { p, mb := makePlugin(t) p.config.Set("LeftPad.MaxLen", "0") testMessage(p, "leftpad dicks 100 dicks") if assert.Len(t, mb.Messages, 1) { assert.Contains(t, mb.Messages[0], "dicks") } } func Test50Padding(t *testing.T) { p, mb := makePlugin(t) p.config.Set("LeftPad.MaxLen", "50") assert.Equal(t, 50, p.config.GetInt("LeftPad.MaxLen", 100)) testMessage(p, "leftpad dicks 100 dicks") if assert.Len(t, mb.Messages, 1) { assert.Contains(t, mb.Messages[0], "kill me") } } func TestUnder50Padding(t *testing.T) { p, mb := makePlugin(t) p.config.Set("LeftPad.MaxLen", "50") testMessage(p, "leftpad dicks 49 dicks") if assert.Len(t, mb.Messages, 1) { assert.Contains(t, mb.Messages[0], "dicks") } } func TestNotPadding(t *testing.T) { p, mb := makePlugin(t) testMessage(p, "lololol") assert.Len(t, mb.Messages, 0) }