That can't work as you get circular deps..
[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 {
29     my $app = build_test_app_with_setup('MyTestDebug', '-Debug');
30
31     ok my $c = MyTestDebug->new, 'Get debug app object';
32     ok my $log = $c->log, 'Get log object';
33     isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object';
34     ok !$log->is_warn, 'Warnings should be disabled';
35     ok !$log->is_error, 'Errors should be disabled';
36     ok !$log->is_fatal, 'Fatal errors should be disabled';
37     ok !$log->is_info, 'Info should be disabled';
38     ok $log->is_debug, 'Debugging should be enabled';
39     ok $app->debug, 'debug method should return true';
40 }
41
42 {
43     my $app = build_test_app_with_setup('MyTestLogParam', '-Log=warn,error,fatal');
44
45     ok my $c = $app->new, 'Get log app object';
46     ok my $log = $c->log, 'Get log object';
47     isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object';
48     ok $log->is_warn, 'Warnings should be enabled';
49     ok $log->is_error, 'Errors should be enabled';
50     ok $log->is_fatal, 'Fatal errors should be enabled';
51     ok !$log->is_info, 'Info should be disabled';
52     ok !$log->is_debug, 'Debugging should be disabled';
53     ok !$c->debug, 'Catalyst debugging is off';
54 }
55 {
56     my $app = build_test_app_with_setup('MyTestNoParams');
57
58     ok my $c = $app->new, 'Get log app object';
59     ok my $log = $c->log, 'Get log object';
60     isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object';
61     ok $log->is_warn, 'Warnings should be enabled';
62     ok $log->is_error, 'Errors should be enabled';
63     ok $log->is_fatal, 'Fatal errors should be enabled';
64     ok $log->is_info, 'Info should be enabled';
65     ok $log->is_debug, 'Debugging should be enabled';
66     ok !$c->debug, 'Catalyst debugging turned off';
67 }
68 {
69     package MyTestAppWithOwnLogger;
70     use base qw/Catalyst/;
71     use Test::MockObject;
72     my $log = Test::MockObject->new;
73     $log->set_false(qw/debug error fatal info warn/);
74     __PACKAGE__->log($log);
75     __PACKAGE__->setup('-Debug');
76 }
77
78 ok my $c = MyTestAppWithOwnLogger->new, 'Get with own logger app object';
79 ok $c->debug, '$c->debug is true';
80