From: Tomas Doran Date: Tue, 28 Apr 2009 19:30:39 +0000 (+0000) Subject: Tests for setup_stats, its all good.. X-Git-Tag: 5.80003~19 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=7c79dcf34b1c15b97859848c56c499f4c7acfd0c Tests for setup_stats, its all good.. --- diff --git a/Changes b/Changes index b1524b8..18556fe 100644 --- a/Changes +++ b/Changes @@ -15,6 +15,7 @@ disabling functionality from base controllers. (t0m) - Bump Moose dependency to latest version to fix metaclass incompatibility issues in some cases. (t0m) + - Additional tests for setup_stats method. (t0m) 5.80002 2009-04-22 01:28:36 - Fix CATALYST_DEBUG and MYAPP_DEBUG environment variables diff --git a/TODO b/TODO index d8eefc4..0f3b2c4 100644 --- a/TODO +++ b/TODO @@ -1,7 +1,5 @@ Bugs: - Make logging levels properly additive. - - Stats bugs? - - Moose tests failing - new MX::MethodAttributes helps with this somewhat. - Chained bugs in http://github.com/bobtfish/catalyst-app-bug-go_chain/tree/master diff --git a/t/unit_core_setup_stats.t b/t/unit_core_setup_stats.t new file mode 100644 index 0000000..9323e45 --- /dev/null +++ b/t/unit_core_setup_stats.t @@ -0,0 +1,59 @@ +use strict; +use warnings; + +use Test::More tests => 5; +use Test::MockObject; + +use Catalyst (); + +my %log_messages; # TODO - Test log messages as expected. +my $mock_log = Test::MockObject->new; +foreach my $level (qw/debug info warn error fatal/) { + $mock_log->mock($level, sub { + $log_messages{$level} ||= []; + push(@{ $log_messages{$level} }, $_[1]); + }); +} + +sub mock_app { + my $name = shift; + %log_messages = (); # Flatten log messages. + print "Setting up mock application: $name\n"; + my $meta = Moose->init_meta( for_class => $name ); + $meta->superclasses('Catalyst'); + $meta->add_method('log', sub { $mock_log }); + return $meta->name; +} + +local %ENV; # Ensure blank or someone, somewhere will fail.. + +{ + my $app = mock_app('TestNoStats'); + $app->setup_stats(); + ok !$app->use_stats, 'stats off by default'; +} +{ + my $app = mock_app('TestStats'); + $app->setup_stats(1); + ok $app->use_stats, 'stats on if you say >setup_stats(1)'; +} +{ + my $app = mock_app('TestStatsDebugTurnsStatsOn'); + $app->meta->add_method('debug' => sub { 1 }); + $app->setup_stats(); + ok $app->use_stats, 'debug on turns stats on'; +} +{ + local %ENV = ( CATALYST_STATS => 1 ); + my $app = mock_app('TestStatsAppStatsEnvSet'); + $app->setup_stats(); + ok $app->use_stats, 'ENV turns stats on'; +} +{ + local %ENV = ( CATALYST_STATS => 0 ); + my $app = mock_app('TestStatsAppStatsEnvUnset'); + $app->meta->add_method('debug' => sub { 1 }); + $app->setup_stats(1); + ok !$app->use_stats, 'ENV turns stats off, even when debug on and ->setup_stats(1)'; +} +