Add failing test for initializer with class attr
[gitmo/MooseX-ClassAttribute.git] / t / 12-with-initializer.t
CommitLineData
21035624 1use strict;
2use warnings;
3use 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
66is(
67 ClassBar->new->chas, 2,
68 "ClassBar's has (non-ClassAttribute) initializer fires"
69);
70
71eval { ClassBaz->new->chas('foobar') };
72like(
73 $@, qr/ClassBaz/,
74 "ClassBaz's class_has (ClassAttribute) trigger fires"
75);
76
77eval { ClassQuz->new->chas('foobar') };
78like( $@, qr/ClassQuz/, "ClassQuz's has (non-ClassAttribute) trigger fires" );
79
80done_testing();