make array references coerce to something useful
[gitmo/MooseX-Types-Log-Dispatch.git] / t / types.t
1
2 use strict;
3 use warnings;
4 use Test::More tests => 5;
5 use Test::Exception;
6
7 #laziest test suite EVER. but it works and whatever its a brain-dead simple module
8
9 {
10   package TestMXTypesLogDispatch;
11   use Moose;
12   use MooseX::Types::Log::Dispatch qw(Logger LogLevel);
13
14   has logger => (
15     isa => Logger,
16     is => 'ro',
17     coerce => 1,
18   );
19
20   has event_log_level => (
21     isa => LogLevel,
22     is => 'ro',
23   );
24
25   sub some_event_happened {
26     my ($self, $event) = @_;
27     $self->logger->log( level => $self->event_log_level, message => "$event happened");
28   }
29 }
30
31 dies_ok {
32   TestMXTypesLogDispatch->new( event_log_level => 'debbbug', );
33 } 'dies ok';
34
35 lives_ok {
36   TestMXTypesLogDispatch->new( event_log_level => 'debug', );
37 } 'lives ok';
38
39 my $obj1;
40 lives_ok {
41   $obj1 = TestMXTypesLogDispatch->new(
42     event_log_level => 'debug',
43     logger => [ ['Null', min_level => 'notice' ] ]
44   );
45 } 'coerces ok';
46
47 ## or
48 my $obj2;
49 lives_ok {
50   $obj2 = TestMXTypesLogDispatch->new(
51     event_log_level => 'warn',
52     logger => { outputs => [ ['Null', min_level => 'debug' ] ] }
53   );
54 } 'coerces ok';
55
56 lives_ok {
57   $obj1->some_event_happened('zoom');
58   $obj2->some_event_happened('zoom');
59 } 'logging actually works';