Commit | Line | Data |
7c79dcf3 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More tests => 5; |
b7574be1 |
5 | use Class::MOP; |
7c79dcf3 |
6 | |
7 | use Catalyst (); |
8 | |
06400669 |
9 | local our %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; |
06400669 |
24 | my $mock_log = shift; |
7c79dcf3 |
25 | %log_messages = (); # Flatten log messages. |
7c79dcf3 |
26 | my $meta = Moose->init_meta( for_class => $name ); |
27 | $meta->superclasses('Catalyst'); |
5d50f369 |
28 | $meta->add_method('log', sub { $mock_log }); |
7c79dcf3 |
29 | return $meta->name; |
30 | } |
31 | |
803210fa |
32 | local %ENV = %ENV; |
69c27273 |
33 | |
803210fa |
34 | # Remove all relevant env variables to avoid accidental fail |
35 | foreach my $name (grep { /^(CATALYST|TESTAPP)/ } keys %ENV) { |
36 | delete $ENV{$name}; |
37 | } |
7c79dcf3 |
38 | |
39 | { |
06400669 |
40 | my $app = mock_app('TestAppNoStats', $mock_log); |
7c79dcf3 |
41 | $app->setup_stats(); |
42 | ok !$app->use_stats, 'stats off by default'; |
43 | } |
44 | { |
06400669 |
45 | my $app = mock_app('TestAppStats', $mock_log); |
7c79dcf3 |
46 | $app->setup_stats(1); |
47 | ok $app->use_stats, 'stats on if you say >setup_stats(1)'; |
48 | } |
49 | { |
06400669 |
50 | my $app = mock_app('TestAppStatsDebugTurnsStatsOn', $mock_log); |
7c79dcf3 |
51 | $app->meta->add_method('debug' => sub { 1 }); |
52 | $app->setup_stats(); |
53 | ok $app->use_stats, 'debug on turns stats on'; |
54 | } |
55 | { |
803210fa |
56 | local %ENV = %ENV; |
57 | $ENV{CATALYST_STATS} = 1; |
06400669 |
58 | my $app = mock_app('TestAppStatsEnvSet', $mock_log); |
7c79dcf3 |
59 | $app->setup_stats(); |
60 | ok $app->use_stats, 'ENV turns stats on'; |
61 | } |
62 | { |
803210fa |
63 | local %ENV = %ENV; |
64 | $ENV{CATALYST_STATS} = 0; |
06400669 |
65 | my $app = mock_app('TestAppStatsEnvUnset', $mock_log); |
7c79dcf3 |
66 | $app->meta->add_method('debug' => sub { 1 }); |
67 | $app->setup_stats(1); |
68 | ok !$app->use_stats, 'ENV turns stats off, even when debug on and ->setup_stats(1)'; |
69 | } |
70 | |