ceff575486b686d5b6c0953a39ebb72fd9e01fc2
[gitmo/MooseX-MetaDescription.git] / t / 004_inheriting_class_meta_desc.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More no_plan => 1;
7 use Test::Exception;
8
9 BEGIN {
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
38 my $foo_class = Foo->meta;
39 isa_ok($foo_class, 'MooseX::MetaDescription::Meta::Class');
40 isa_ok($foo_class->metadescription, 'MooseX::MetaDescription::Description');
41 is($foo_class->metadescription->descriptor, $foo_class, '... got the circular ref');
42
43 my $bar_class = Bar->meta;
44 isa_ok($bar_class, 'MooseX::MetaDescription::Meta::Class');
45 isa_ok($bar_class->metadescription, 'MooseX::MetaDescription::Description');
46 is($bar_class->metadescription->descriptor, $bar_class, '... got the circular ref');
47
48 my $baz_class = Baz->meta;
49 isa_ok($baz_class, 'MooseX::MetaDescription::Meta::Class');
50 isa_ok($baz_class->metadescription, 'MooseX::MetaDescription::Description');
51 is($baz_class->metadescription->descriptor, $baz_class, '... got the circular ref');
52
53
54 foreach 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
65 foreach 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
76 foreach 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