no_plan does not take a param
[gitmo/MooseX-MetaDescription.git] / t / 011_meta_desc_custom_traits.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More 'no_plan';
7 use Test::Exception;
8 use Test::Moose;
9
10 BEGIN {
11     use_ok('MooseX::MetaDescription');
12 }
13
14 {
15     package Foo::Description::Trait;
16     use Moose::Role;
17     
18     has 'bar'   => (is => 'ro', isa => 'Str');
19     has 'baz'   => (is => 'ro', isa => 'Str');    
20     has 'gorch' => (is => 'ro', isa => 'Str');        
21 }
22
23 {
24     package Foo::MetaDescription::Attribute;
25     use Moose;
26     
27     extends 'MooseX::MetaDescription::Meta::Attribute';
28     
29     sub prepare_traits_for_application {
30         my ($self, $traits) = @_;
31         [ map { "${_}::Description::Trait" } @$traits ]
32     }
33 }
34
35 {
36     package Foo;
37     use Moose;
38     
39     has 'baz' => (
40         metaclass   => 'Foo::MetaDescription::Attribute',
41         is          => 'ro',
42         isa         => 'Str',   
43         default     => sub { 'Foo::baz' },
44         description => {
45             traits => [qw[Foo]],
46             bar    => 'Foo::baz::bar',
47             gorch  => 'Foo::baz::gorch',
48         }
49     );    
50 }
51
52 # check the meta-desc
53
54 my $baz_attr = Foo->meta->get_attribute('baz');
55 isa_ok($baz_attr->metadescription, 'MooseX::MetaDescription::Description');
56 does_ok($baz_attr->metadescription, 'Foo::Description::Trait');
57 is($baz_attr->metadescription->descriptor, $baz_attr, '... got the circular ref');
58
59 # check the actual descs
60
61 foreach my $foo ('Foo', Foo->new) {
62
63     is_deeply(
64         $foo->meta->get_attribute('baz')->description,
65         {
66             bar   => 'Foo::baz::bar',
67             gorch => 'Foo::baz::gorch',
68         },
69         '... got the right class description'
70     );
71     
72     my $baz_meta_desc = $foo->meta->get_attribute('baz')->metadescription;
73     is($baz_meta_desc->bar,   'Foo::baz::bar',   '... we have methods');
74     is($baz_meta_desc->gorch, 'Foo::baz::gorch', '... we have methods');    
75 }
76