botopolis/bot

View on GitHub
mock/chat.go

Summary

Maintainability
A
0 mins
Test Coverage
package mock

import "github.com/botopolis/bot"

// Chat is a mock bot.Chat
type Chat struct {
    *Plugin
    // Returned by Username
    Name string
    // Returned by Messages
    MessageChan chan bot.Message
    // Called by Send
    SendFunc func(bot.Message) error
    // Called by Reply
    ReplyFunc func(bot.Message) error
    // Called by Direct
    DirectFunc func(bot.Message) error
    // Called by Topic
    TopicFunc func(bot.Message) error
}

// NewChat returns a NOOP Chat
func NewChat() *Chat {
    return &Chat{
        Plugin:     NewPlugin(),
        SendFunc:   func(bot.Message) error { return nil },
        ReplyFunc:  func(bot.Message) error { return nil },
        DirectFunc: func(bot.Message) error { return nil },
        TopicFunc:  func(bot.Message) error { return nil },
    }
}

// Username returns Chat.Name
func (a *Chat) Username() string { return a.Name }

// Messages returns Chat.MessageChan
func (a *Chat) Messages() <-chan bot.Message { return a.MessageChan }

// Send delegates to Chat.SendFunc
func (a *Chat) Send(m bot.Message) error { return a.SendFunc(m) }

// Reply delegates to Chat.ReplyFunc
func (a *Chat) Reply(m bot.Message) error { return a.ReplyFunc(m) }

// Direct delegates to Chat.DirectFunc
func (a *Chat) Direct(m bot.Message) error { return a.DirectFunc(m) }

// Topic delegates to Chat.TopicFunc
func (a *Chat) Topic(m bot.Message) error { return a.TopicFunc(m) }