Resolve 4 'failing' tests
[gitmo/Mouse.git] / t / 030_roles / 018_runtime_roles_w_params.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 21;
7 use Test::Exception;
8
9
10
11 {
12     package Foo;
13     use Mouse;
14     has 'bar' => (is => 'ro');
15
16     package Bar;
17     use Mouse::Role;
18
19     has 'baz' => (is => 'ro', default => 'BAZ');
20 }
21
22 # normal ...
23 {
24     my $foo = Foo->new(bar => 'BAR');
25     isa_ok($foo, 'Foo');
26
27     is($foo->bar, 'BAR', '... got the expect value');
28     ok(!$foo->can('baz'), '... no baz method though');
29
30     lives_ok {
31         Bar->meta->apply($foo)
32     } '... this works';
33
34     is($foo->bar, 'BAR', '... got the expect value');
35     ok($foo->can('baz'), '... we have baz method now');
36     is($foo->baz, 'BAZ', '... got the expect value');
37 }
38
39 # with extra params ...
40 {
41     my $foo = Foo->new(bar => 'BAR');
42     isa_ok($foo, 'Foo');
43
44     is($foo->bar, 'BAR', '... got the expect value');
45     ok(!$foo->can('baz'), '... no baz method though');
46
47     lives_ok {
48         Bar->meta->apply($foo, (rebless_params => { baz => 'FOO-BAZ' }))
49     } '... this works';
50
51     is($foo->bar, 'BAR', '... got the expect value');
52     ok($foo->can('baz'), '... we have baz method now');
53     {
54         local $TODO = 'rebless_params is not implemented';
55         is($foo->baz, 'FOO-BAZ', '... got the expect value');
56     }
57 }
58
59 # with extra params ...
60 {
61     my $foo = Foo->new(bar => 'BAR');
62     isa_ok($foo, 'Foo');
63
64     is($foo->bar, 'BAR', '... got the expect value');
65     ok(!$foo->can('baz'), '... no baz method though');
66
67     lives_ok {
68         Bar->meta->apply($foo, (rebless_params => { bar => 'FOO-BAR', baz => 'FOO-BAZ' }))
69     } '... this works';
70
71     {
72         local $TODO = 'rebless params is not implemented';
73         is($foo->bar, 'FOO-BAR', '... got the expect value');
74     }
75     ok($foo->can('baz'), '... we have baz method now');
76     {
77         local $TODO = 'rebless params is not implemented';
78         is($foo->baz, 'FOO-BAZ', '... got the expect value');
79     }
80 }
81
82