no_plan does not take a param
[gitmo/MooseX-MetaDescription.git] / t / 011_meta_desc_custom_traits.t
CommitLineData
7c697304 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
d68e679f 6use Test::More 'no_plan';
7c697304 7use Test::Exception;
8use Test::Moose;
9
10BEGIN {
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
54my $baz_attr = Foo->meta->get_attribute('baz');
55isa_ok($baz_attr->metadescription, 'MooseX::MetaDescription::Description');
56does_ok($baz_attr->metadescription, 'Foo::Description::Trait');
57is($baz_attr->metadescription->descriptor, $baz_attr, '... got the circular ref');
58
59# check the actual descs
60
61foreach 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