Add failing test for initializer with class attr
[gitmo/MooseX-ClassAttribute.git] / t / 12-with-initializer.t
1 use strict;
2 use warnings;
3 use Test::More;
4
5 {
6     package ClassFoo;
7
8     use Moose;
9     use MooseX::ClassAttribute;
10
11     class_has 'chas' => (
12         isa         => 'Int',
13         is          => 'ro',
14         default     => 1,
15         initializer => sub { $_[2]->( $_[1] + 1 ) }
16     );
17 }
18
19 {
20     package ClassBar;
21     use Moose;
22
23     has 'chas' => (
24         isa         => 'Int',
25         is          => 'ro',
26         default     => 1,
27         initializer => sub { $_[2]->( $_[1] + 1 ) }
28     );
29 }
30
31 {
32     package ClassBaz;
33     use Moose;
34     use MooseX::ClassAttribute;
35
36     class_has 'chas' => (
37         isa     => 'Str',
38         is      => 'rw',
39         default => 'Foobar',
40         trigger => sub { die __PACKAGE__ }
41     );
42 }
43
44 {
45     package ClassQuz;
46     use Moose;
47
48     has 'chas' => (
49         isa     => 'Str',
50         is      => 'rw',
51         default => 'Foobar',
52         trigger => sub { die __PACKAGE__ }
53     );
54 }
55
56 {
57     local $TODO
58         = 'Class attributes with an initializer are not initialized properly';
59
60     is(
61         ClassFoo->chas, 2,
62         "ClassFoo's class_has (ClassAttribute) initializer fires"
63     );
64 }
65
66 is(
67     ClassBar->new->chas, 2,
68     "ClassBar's has (non-ClassAttribute) initializer fires"
69 );
70
71 eval { ClassBaz->new->chas('foobar') };
72 like(
73     $@, qr/ClassBaz/,
74     "ClassBaz's class_has (ClassAttribute) trigger fires"
75 );
76
77 eval { ClassQuz->new->chas('foobar') };
78 like( $@, qr/ClassQuz/, "ClassQuz's has (non-ClassAttribute) trigger fires" );
79
80 done_testing();