8f41a2ba865aa668b6aa47a05de927115a554c39
[catagits/Catalyst-Runtime.git] / t / unit_core_setup.t
1 use strict;
2 use warnings;
3 use Class::MOP::Class;
4 use Catalyst::Runtime;
5
6 use Test::More tests => 29;
7
8 {
9     # Silence the log.
10     my $meta = Catalyst::Log->meta;
11     $meta->make_mutable;
12     $meta->remove_method('_send_to_log');
13     $meta->add_method('_send_to_log', sub {});
14 }
15
16 sub build_test_app_with_setup {
17     my ($name, @flags) = @_;
18     my $flags = '(' . join(', ', map { "'".$_."'" } @flags) . ')';
19     $flags = '' if $flags eq '()';
20     eval qq{
21         package $name;
22         use Catalyst $flags;
23         $name->setup;
24     };
25     die $@ if $@;
26     return $name;
27 }
28
29 build_test_app_with_setup('UnusedApp'); # Mock an app before localizing %ENV
30                                   # to ensure that anything which is dynamically
31                                   # loaded from the enviornment is loaded
32
33 local %ENV; # Don't allow env variables to mess us up.
34
35 {
36     my $app = build_test_app_with_setup('MyTestDebug', '-Debug');
37
38     ok my $c = MyTestDebug->new, 'Get debug app object';
39     ok my $log = $c->log, 'Get log object';
40     isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object';
41     ok $log->is_warn, 'Warnings should be enabled';
42     ok $log->is_error, 'Errors should be enabled';
43     ok $log->is_fatal, 'Fatal errors should be enabled';
44     ok $log->is_info, 'Info should be enabled';
45     ok $log->is_debug, 'Debugging should be enabled';
46     ok $app->debug, 'debug method should return true';
47 }
48
49 {
50     my $app = build_test_app_with_setup('MyTestLogParam', '-Log=warn,error,fatal');
51
52     ok my $c = $app->new, 'Get log app object';
53     ok my $log = $c->log, 'Get log object';
54     isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object';
55     ok $log->is_warn, 'Warnings should be enabled';
56     ok $log->is_error, 'Errors should be enabled';
57     ok $log->is_fatal, 'Fatal errors should be enabled';
58     ok !$log->is_info, 'Info should be disabled';
59     ok !$log->is_debug, 'Debugging should be disabled';
60     ok !$c->debug, 'Catalyst debugging is off';
61 }
62 {
63     my $app = build_test_app_with_setup('MyTestNoParams');
64
65     ok my $c = $app->new, 'Get log app object';
66     ok my $log = $c->log, 'Get log object';
67     isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object';
68     ok $log->is_warn, 'Warnings should be enabled';
69     ok $log->is_error, 'Errors should be enabled';
70     ok $log->is_fatal, 'Fatal errors should be enabled';
71     ok $log->is_info, 'Info should be enabled';
72     ok $log->is_debug, 'Debugging should be enabled';
73     ok !$c->debug, 'Catalyst debugging turned off';
74 }
75 my $log_meta = Class::MOP::Class->create_anon_class(
76     methods => { map { $_ => sub { 0 } } qw/debug error fatal info warn/ },
77 );
78 {
79     package MyTestAppWithOwnLogger;
80     use base qw/Catalyst/;
81     __PACKAGE__->log($log_meta->new_object);
82     __PACKAGE__->setup('-Debug');
83 }
84
85 ok my $c = MyTestAppWithOwnLogger->new, 'Get with own logger app object';
86 ok $c->debug, '$c->debug is true';
87