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