Commit | Line | Data |
7c79dcf3 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More tests => 5; |
5 | use Test::MockObject; |
6 | |
7 | use Catalyst (); |
8 | |
9 | my %log_messages; # TODO - Test log messages as expected. |
10 | my $mock_log = Test::MockObject->new; |
11 | foreach my $level (qw/debug info warn error fatal/) { |
12 | $mock_log->mock($level, sub { |
13 | $log_messages{$level} ||= []; |
14 | push(@{ $log_messages{$level} }, $_[1]); |
15 | }); |
16 | } |
17 | |
18 | sub mock_app { |
19 | my $name = shift; |
20 | %log_messages = (); # Flatten log messages. |
21 | print "Setting up mock application: $name\n"; |
22 | my $meta = Moose->init_meta( for_class => $name ); |
23 | $meta->superclasses('Catalyst'); |
24 | $meta->add_method('log', sub { $mock_log }); |
25 | return $meta->name; |
26 | } |
27 | |
28 | local %ENV; # Ensure blank or someone, somewhere will fail.. |
29 | |
30 | { |
31 | my $app = mock_app('TestNoStats'); |
32 | $app->setup_stats(); |
33 | ok !$app->use_stats, 'stats off by default'; |
34 | } |
35 | { |
36 | my $app = mock_app('TestStats'); |
37 | $app->setup_stats(1); |
38 | ok $app->use_stats, 'stats on if you say >setup_stats(1)'; |
39 | } |
40 | { |
41 | my $app = mock_app('TestStatsDebugTurnsStatsOn'); |
42 | $app->meta->add_method('debug' => sub { 1 }); |
43 | $app->setup_stats(); |
44 | ok $app->use_stats, 'debug on turns stats on'; |
45 | } |
46 | { |
47 | local %ENV = ( CATALYST_STATS => 1 ); |
48 | my $app = mock_app('TestStatsAppStatsEnvSet'); |
49 | $app->setup_stats(); |
50 | ok $app->use_stats, 'ENV turns stats on'; |
51 | } |
52 | { |
53 | local %ENV = ( CATALYST_STATS => 0 ); |
54 | my $app = mock_app('TestStatsAppStatsEnvUnset'); |
55 | $app->meta->add_method('debug' => sub { 1 }); |
56 | $app->setup_stats(1); |
57 | ok !$app->use_stats, 'ENV turns stats off, even when debug on and ->setup_stats(1)'; |
58 | } |
59 | |