Fix behaviour on privmsg and add tests for privmsg
[poe-component-irc-plugin-seen.git] / t / POE-Component-IRC-Plugin-Seen.t
CommitLineData
566f7a16
MG
1use v5.14;
2use strict;
3use warnings;
4
b9ec22f5 5use Test::More tests => 10;
566f7a16
MG
6use Test::MockObject;
7
8BEGIN { *CORE::GLOBAL::localtime = sub { 'now' } }
9
10BEGIN { use_ok('POE::Component::IRC::Plugin::Seen') };
11
12# Variable setup
13my $last_msg;
14
15my $mockirc = Test::MockObject->new;
16$mockirc->mock(yield => sub { $last_msg = $_[3] if $_[1] eq 'privmsg'})->set_always(nick_name => 'bot');
17
18my $self = POE::Component::IRC::Plugin::Seen->new;
19my $channels = [ '#chan' ];
20my $rmgv = \'mgv!marius@ieval.ro';
21
22# Sub setup
23sub runtest{
b9ec22f5 24 my ($message, $expect, $comment, $privmsg) = @_;
f45fe0ce 25 undef $last_msg;
b9ec22f5
MG
26 $self->S_public($mockirc, $rmgv, \$channels, \$message) unless $privmsg;
27 $self->S_msg($mockirc, $rmgv, \$channels, \$message) if $privmsg;
f45fe0ce 28 is($last_msg, $expect, $comment)
566f7a16
MG
29}
30
31runtest 'something', undef, 'initialize';
3b40dfa4 32runtest 'seen mgv', 'I last saw mgv now on #chan saying something', 'public';
566f7a16
MG
33
34$self->S_ctcp_action($mockirc, $rmgv, \$channels, \'sleeping');
3b40dfa4 35runtest '!seen mgv', 'I last saw mgv now on #chan doing: * sleeping', 'ctcp_action';
566f7a16
MG
36
37$self->S_join($mockirc, $rmgv, \'#chan');
38runtest 'bot: seen mgv', 'I last saw mgv now joining #chan', 'join';
39
40$self->S_part($mockirc, $rmgv, \'#chan', \'');
3b40dfa4 41runtest 'bot: !seen mgv', 'I last saw mgv now parting #chan', 'part without message';
566f7a16
MG
42
43$self->S_part($mockirc, $rmgv, \'#chan', \'buh-bye');
44runtest 'bot: seen mgv', "I last saw mgv now parting #chan with message 'buh-bye'", 'part with message';
45
46runtest 'bot: seen asd', "I haven't seen asd", "haven't seen";
b9ec22f5
MG
47
48# Private messages
49runtest 'seen asd', "I haven't seen asd", "haven't seen", 1;
50runtest ' !seen asd', "I haven't seen asd", "haven't seen", 1;
This page took 0.011489 seconds and 4 git commands to generate.