File: | t/bot-irc-run.t |
Coverage: | 100.0% |
line | stmt | bran | cond | sub | pod | time | code |
---|---|---|---|---|---|---|---|
1 | 1 1 1 | 40652 8 50 | use strict; | ||||
2 | 1 1 1 | 9 4 54 | use warnings; | ||||
3 | |||||||
4 | 1 1 1 | 2756 875941 14 | use Test::Most; | ||||
5 | 1 1 1 | 1250593 113535 555 | use Test::MockModule; | ||||
6 | 1 1 1 | 59662 1004088 27 | use Test::Output; | ||||
7 | |||||||
8 | 1 | 932133 | my $socket = Test::MockModule->new('IO::Socket::INET'); | ||||
9 | $socket->mock( new => sub { | ||||||
10 | 1 | 18 | return bless( {}, shift ); | ||||
11 | 1 | 50 | } ); | ||||
12 | 1 | 100 | $socket->mock( print => sub {} ); | ||||
13 | |||||||
14 | 1 | 59 | my $device = Test::MockModule->new('Daemon::Device'); | ||||
15 | $device->mock( new => sub { | ||||||
16 | 1 | 9 | return bless( {}, shift ); | ||||
17 | 1 | 52 | } ); | ||||
18 | 1 | 164 | $device->mock( run => sub {} ); | ||||
19 | 1 1 | 64 9 | $device->mock( ppid => sub { return 42 } ); | ||||
20 | 1 1 | 42 9 | $device->mock( children => sub { return [ 1024, 1138 ] } ); | ||||
21 | 1 | 69 | $device->mock( message => sub {} ); | ||||
22 | |||||||
23 | 1 1 1 | 3111 7 692 | use constant MODULE => 'Bot::IRC'; | ||||
24 | |||||||
25 | 1 1 1 1 1 | 48 5565 65 58 6170 | BEGIN { use_ok(MODULE); } | ||||
26 | |||||||
27 | 1 | 65 | my $settings = { | ||||
28 | spawn => 3, | ||||||
29 | daemon => { | ||||||
30 | name => 'bot', | ||||||
31 | lsb_sdesc => 'IRC Bot', | ||||||
32 | pid_file => 'bot.pid', | ||||||
33 | stderr_file => 'bot.err', | ||||||
34 | stdout_file => 'bot.log', | ||||||
35 | }, | ||||||
36 | connect => { | ||||||
37 | server => 'irc.perl.org', | ||||||
38 | port => '6667', | ||||||
39 | nick => 'bot', | ||||||
40 | name => 'Yet Another IRC Bot', | ||||||
41 | join => [ '#test', '#perl' ], | ||||||
42 | ssl => 0, | ||||||
43 | }, | ||||||
44 | }; | ||||||
45 | |||||||
46 | 1 | 7 | my $bot; | ||||
47 | 1 | 37 | lives_ok( sub { $bot = MODULE->new( | ||||
48 | %$settings, | ||||||
49 | 1 | 25 | ) }, MODULE . '->new(@config)' ); | ||||
50 | |||||||
51 | 1 1 | 633 142 | lives_ok( sub { $bot->run }, MODULE . '->run' ); | ||||
52 | |||||||
53 | stdout_is( | ||||||
54 | 1 | 8500 | sub { $bot->say( qw( line0 line1 ) ) }, | ||||
55 | 1 | 184 | "<<< line0\n<<< line1\n", | ||||
56 | '$bot->say', | ||||||
57 | ); | ||||||
58 | |||||||
59 | stdout_is( | ||||||
60 | 1 | 643 | sub { $bot->msg( '#test', 'Message.' ) }, | ||||
61 | 1 | 1634 | "<<< PRIVMSG #test :Message.\n", | ||||
62 | '$bot->msg', | ||||||
63 | ); | ||||||
64 | |||||||
65 | warning_like( | ||||||
66 | 1 | 63 | sub { $bot->reply('Message.') }, | ||||
67 | 1 | 565 | qr/Didn't have a target to send reply to/, | ||||
68 | '$bot->reply without forum', | ||||||
69 | ); | ||||||
70 | |||||||
71 | stdout_is( | ||||||
72 | 1 | 1243 | sub { $bot->nick('new') }, | ||||
73 | 1 | 268 | "<<< NICK new\n", | ||||
74 | '$bot->nick', | ||||||
75 | ); | ||||||
76 | |||||||
77 | 1 | 2081 | done_testing; |