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