The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::Mojo::IRC -ua;

my $t      = Test::Mojo::IRC->new;
my $server = $t->start_server;
my $irc    = Mojo::IRC::UA->new(server => $server, user => "test$$");

plan skip_all => 'https://github.com/jhthorsen/mojo-irc/issues/28' unless $ENV{TEST_ALL};

$irc->connect(sub { Mojo::IOLoop->stop });
Mojo::IOLoop->start;

#$t->run(
#  [qr{JOIN} => ['join-convos.irc']],
#  sub {
#    my ($err, $info);
#    $irc->join_channel('#random', sub { ($err, $info) = @_[1, 2]; Mojo::IOLoop->stop });
#    Mojo::IOLoop->start;
#    is $err, '', 'join convos';
#  },
#);

$t->run(
  [qr{MODE} => ['mode-i.irc']],
  sub {
    my ($err, $mode);
    $irc->mode('-i', sub { ($err, $mode) = @_[1, 2]; Mojo::IOLoop->stop });
    Mojo::IOLoop->start;
    is $err,  '',   'mode mode set error';
    is $mode, '-i', 'user mode set';
  },
);

$t->run(
  [qr{MODE} => ['mode-get.irc']],
  sub {
    my ($err, $mode);
    $irc->mode(sub { ($err, $mode) = @_[1, 2]; Mojo::IOLoop->stop });
    Mojo::IOLoop->start;
    is $err,  '',  'user mode get err';
    is $mode, '+', 'user mode get';
  },
);

$t->run(
  [qr{MODE} => ['channel-mode-set.irc']],
  sub {
    my ($err, $mode);
    $irc->mode('#random +k secret', sub { ($err, $mode) = @_[1, 2]; Mojo::IOLoop->stop });
    Mojo::IOLoop->start;
    is $err, '', 'channel mode err';
    is $mode->{mode}, '+k secret', 'channel mode set';
  },
);

done_testing;

__DATA__
@@ mode-i.irc
:test_____!~test70243@localhost MODE other :+i
:test_____!~test70243@localhost MODE test_____ -i
@@ mode-get.irc
:hades.arpa 221 other x
:hades.arpa 221 test_____ +
@@ channel-mode-set.irc
:test_____!~test72489@localhost MODE #foo -k
:test_____!~test72489@localhost MODE #random +k secret