Test uri_for with path = 0
[catagits/Catalyst-Runtime.git] / t / aggregate / unit_core_setup_stats.t
1 use strict;
2 use warnings;
3
4 use Test::More tests => 5;
5 use Class::MOP;
6
7 use Catalyst ();
8
9 local our %log_messages; # TODO - Test log messages as expected.
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;
21
22 sub mock_app {
23     my $name = shift;
24     my $mock_log = shift;
25     %log_messages = (); # Flatten log messages.
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
32 local %ENV = %ENV;
33
34 # Remove all relevant env variables to avoid accidental fail
35 foreach my $name (grep { /^(CATALYST|TESTAPP)/ } keys %ENV) {
36     delete $ENV{$name};
37 }
38
39 {
40     my $app = mock_app('TestAppNoStats', $mock_log);
41     $app->setup_stats();
42     ok !$app->use_stats, 'stats off by default';
43 }
44 {
45     my $app = mock_app('TestAppStats', $mock_log);
46     $app->setup_stats(1);
47     ok $app->use_stats, 'stats on if you say >setup_stats(1)';
48 }
49 {
50     my $app = mock_app('TestAppStatsDebugTurnsStatsOn', $mock_log);
51     $app->meta->add_method('debug' => sub { 1 });
52     $app->setup_stats();
53     ok $app->use_stats, 'debug on turns stats on';
54 }
55 {
56     local %ENV = %ENV;
57     $ENV{CATALYST_STATS} = 1;
58     my $app = mock_app('TestAppStatsEnvSet', $mock_log);
59     $app->setup_stats();
60     ok $app->use_stats, 'ENV turns stats on';
61 }
62 {
63     local %ENV = %ENV;
64     $ENV{CATALYST_STATS} = 0;
65     my $app = mock_app('TestAppStatsEnvUnset', $mock_log);
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