Implement 'does' attribute in has()
[gitmo/Mouse.git] / t / 030_roles / failing / 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     is($foo->baz, 'FOO-BAZ', '... got the expect value');
54 }
55
56 # with extra params ...
57 {
58     my $foo = Foo->new(bar => 'BAR');
59     isa_ok($foo, 'Foo');
60
61     is($foo->bar, 'BAR', '... got the expect value');
62     ok(!$foo->can('baz'), '... no baz method though');
63
64     lives_ok {
65         Bar->meta->apply($foo, (rebless_params => { bar => 'FOO-BAR', baz => 'FOO-BAZ' }))
66     } '... this works';
67
68     is($foo->bar, 'FOO-BAR', '... got the expect value');
69     ok($foo->can('baz'), '... we have baz method now');
70     is($foo->baz, 'FOO-BAZ', '... got the expect value');
71 }
72
73