inheriting class desc
[gitmo/MooseX-MetaDescription.git] / t / 004_inheriting_class_meta_desc.t
CommitLineData
d9f5e5ae 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More no_plan => 1;
7use Test::Exception;
8
9BEGIN {
10 use_ok('MooseX::MetaDescription');
11}
12
13{
14 package Foo;
15 use metaclass 'MooseX::MetaDescription::Meta::Class' => (
16 description => {
17 'Hello' => 'World',
18 'World' => 'Hello',
19 }
20 );
21 use Moose;
22
23 package Bar;
24 use Moose;
25
26 extends 'Foo';
27
28 __PACKAGE__->meta->description->{'Hello'} = 'Earth';
29
30 package Baz;
31 use Moose;
32
33 extends 'Bar';
34}
35
36# check the meta-desc
37
38my $foo_class = Foo->meta;
39isa_ok($foo_class, 'MooseX::MetaDescription::Meta::Class');
40isa_ok($foo_class->metadescription, 'MooseX::MetaDescription::Description');
41is($foo_class->metadescription->descriptor, $foo_class, '... got the circular ref');
42
43my $bar_class = Bar->meta;
44isa_ok($bar_class, 'MooseX::MetaDescription::Meta::Class');
45isa_ok($bar_class->metadescription, 'MooseX::MetaDescription::Description');
46is($bar_class->metadescription->descriptor, $bar_class, '... got the circular ref');
47
48my $baz_class = Baz->meta;
49isa_ok($baz_class, 'MooseX::MetaDescription::Meta::Class');
50isa_ok($baz_class->metadescription, 'MooseX::MetaDescription::Description');
51is($baz_class->metadescription->descriptor, $baz_class, '... got the circular ref');
52
53
54foreach my $x ('Foo', Foo->new) {
55 is_deeply(
56 $x->meta->description,
57 {
58 'Hello' => 'World',
59 'World' => 'Hello'
60 },
61 '... got the right class description'
62 );
63}
64
65foreach my $x ('Bar', Bar->new) {
66 is_deeply(
67 $x->meta->description,
68 {
69 'Hello' => 'Earth',
70 'World' => 'Hello'
71 },
72 '... got the right class description'
73 );
74}
75
76foreach my $x ('Baz', Baz->new) {
77 is_deeply(
78 $x->meta->description,
79 {
80 'Hello' => 'Earth',
81 'World' => 'Hello'
82 },
83 '... got the right class description'
84 );
85}
86