The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use strict;
use warnings;
use lib ('lib', 't/lib');
use Horris::Instance;
use Horris::Connection;
use Horris::Connection::Plugin::Eval;
use Test::MockObject::Extends;
use Test::More (tests => 2);

my $plugin_name = 'Eval';
my $horris = Horris::Instance->new([$plugin_name]);
my $plugin = Horris::Connection::Plugin::Eval->new({
    parent => $horris->{conn}, 
    name => $plugin_name, 
});

my $conn = Test::MockObject::Extends->new('Horris::Connection');
$plugin->_connection($conn);

my $event = 'irc_privmsg';

my %test_message = (
    'eval: print 1 .. 10;' => '12345678910',    # general
    'eval print "나는미남";' => '나는미남'     # unicode
);

for my $key (keys %test_message) {
    $conn->mock($event, sub {
        my ($self, $args) = @_;
        like($args->{message}, qr/$test_message{$key}/);
    });

    my $message = Horris::Message->new(
        channel => '#test',
        message => $key, 
        from	=> 'test',
    );

    $plugin->$event($message);
}