Version 0.06
[gitmo/MooseX-MetaDescription.git] / t / 001_basic.t
CommitLineData
c13295c8 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
d68e679f 6use Test::More 'no_plan';
c13295c8 7use Test::Exception;
8
9BEGIN {
10 use_ok('MooseX::MetaDescription');
11}
12
13{
14 package Foo;
d9f5e5ae 15 use metaclass 'MooseX::MetaDescription::Meta::Class' => (
16 description => {
17 'Hello' => 'World'
18 }
19 );
c13295c8 20 use Moose;
21
c13295c8 22 has 'bar' => (
23 metaclass => 'MooseX::MetaDescription::Meta::Attribute',
24 is => 'ro',
25 isa => 'Str',
26 default => sub { 'Foo::bar' },
27 description => {
28 baz => 'Foo::bar::baz',
29 gorch => 'Foo::bar::gorch',
30 }
31 );
32
33 has 'baz' => (
5d49532a 34 traits => [ 'MooseX::MetaDescription::Meta::Trait' ],
c13295c8 35 is => 'ro',
36 isa => 'Str',
37 default => sub { 'Foo::baz' },
38 description => {
39 bar => 'Foo::baz::bar',
40 gorch => 'Foo::baz::gorch',
41 }
42 );
43}
44
45# check the meta-desc
46
47my $foo_class = Foo->meta;
d9f5e5ae 48isa_ok($foo_class, 'MooseX::MetaDescription::Meta::Class');
5d49532a 49isa_ok($foo_class->metadescription, 'MooseX::MetaDescription::Description');
de7ba0e9 50is($foo_class->metadescription->descriptor, $foo_class, '... got the circular ref');
c13295c8 51
52my $bar_attr = Foo->meta->get_attribute('bar');
5d49532a 53isa_ok($bar_attr->metadescription, 'MooseX::MetaDescription::Description');
de7ba0e9 54is($bar_attr->metadescription->descriptor, $bar_attr, '... got the circular ref');
c13295c8 55
56my $baz_attr = Foo->meta->get_attribute('baz');
5d49532a 57isa_ok($baz_attr->metadescription, 'MooseX::MetaDescription::Description');
de7ba0e9 58is($baz_attr->metadescription->descriptor, $baz_attr, '... got the circular ref');
c13295c8 59
60# check the actual descs
61
62foreach my $foo ('Foo', Foo->new) {
63 is_deeply(
64 $foo->meta->description,
65 { 'Hello' => 'World' },
66 '... got the right class description'
67 );
68
69 is_deeply(
70 $foo->meta->get_attribute('bar')->description,
71 {
72 baz => 'Foo::bar::baz',
73 gorch => 'Foo::bar::gorch',
74 },
75 '... got the right class description'
76 );
77
78 is_deeply(
79 $foo->meta->get_attribute('baz')->description,
80 {
81 bar => 'Foo::baz::bar',
82 gorch => 'Foo::baz::gorch',
83 },
84 '... got the right class description'
85 );
86}
87