no_plan does not take a param
[gitmo/MooseX-MetaDescription.git] / t / 004_inheriting_class_meta_desc.t
CommitLineData
d9f5e5ae 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
d68e679f 6use Test::More 'no_plan';
d9f5e5ae 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
56e78a9c 28 # always add it *after* the extends
d9f5e5ae 29 __PACKAGE__->meta->description->{'Hello'} = 'Earth';
30
31 package Baz;
32 use Moose;
33
34 extends 'Bar';
56e78a9c 35
36 package Gorch;
37 use metaclass 'MooseX::MetaDescription::Meta::Class' => (
38 description => {
39 'Hello' => 'World'
40 }
41 );
42 use Moose;
43
44 extends 'Baz';
d9f5e5ae 45}
46
47# check the meta-desc
48
49my $foo_class = Foo->meta;
50isa_ok($foo_class, 'MooseX::MetaDescription::Meta::Class');
51isa_ok($foo_class->metadescription, 'MooseX::MetaDescription::Description');
52is($foo_class->metadescription->descriptor, $foo_class, '... got the circular ref');
53
54my $bar_class = Bar->meta;
55isa_ok($bar_class, 'MooseX::MetaDescription::Meta::Class');
56isa_ok($bar_class->metadescription, 'MooseX::MetaDescription::Description');
57is($bar_class->metadescription->descriptor, $bar_class, '... got the circular ref');
58
59my $baz_class = Baz->meta;
60isa_ok($baz_class, 'MooseX::MetaDescription::Meta::Class');
61isa_ok($baz_class->metadescription, 'MooseX::MetaDescription::Description');
62is($baz_class->metadescription->descriptor, $baz_class, '... got the circular ref');
63
56e78a9c 64my $gorch_class = Gorch->meta;
65isa_ok($gorch_class, 'MooseX::MetaDescription::Meta::Class');
66isa_ok($gorch_class->metadescription, 'MooseX::MetaDescription::Description');
67is($gorch_class->metadescription->descriptor, $gorch_class, '... got the circular ref');
d9f5e5ae 68
69foreach my $x ('Foo', Foo->new) {
70 is_deeply(
71 $x->meta->description,
72 {
73 'Hello' => 'World',
74 'World' => 'Hello'
75 },
76 '... got the right class description'
77 );
78}
79
80foreach my $x ('Bar', Bar->new) {
81 is_deeply(
82 $x->meta->description,
83 {
84 'Hello' => 'Earth',
85 'World' => 'Hello'
86 },
56e78a9c 87 '... got the right class description (inherited and changed)'
d9f5e5ae 88 );
89}
90
91foreach my $x ('Baz', Baz->new) {
92 is_deeply(
93 $x->meta->description,
94 {
95 'Hello' => 'Earth',
96 'World' => 'Hello'
97 },
56e78a9c 98 '... got the right class description (inherited with changes handles correctly)'
d9f5e5ae 99 );
100}
101
56e78a9c 102foreach my $x ('Gorch', Gorch->new) {
103 is_deeply(
104 $x->meta->description,
105 {
106 'Hello' => 'World',
107 },
108 '... got the right class description (with completely overriden desc)'
109 );
110}