Add meta() method to method metaclasses
[gitmo/Mouse.git] / t / 001_mouse / 063-meta-of-metaclasses.t
index 9aa2e3b..8ef6294 100644 (file)
@@ -2,17 +2,41 @@
 use strict;
 use warnings;
 
-use Test::More tests => 6;
+use Test::More tests => 10;
 
-use Mouse ();
+{
+    package Class;
+    use Mouse;
 
-can_ok('Mouse::Meta::Class', 'meta');
-can_ok('Mouse::Meta::Role', 'meta');
+    has foo => (is => 'rw');
 
-my $meta = Mouse::Meta::Class->meta;
-can_ok($meta->constructor_class, 'meta');
-can_ok($meta->destructor_class, 'meta');
-can_ok($meta->attribute_metaclass, 'meta');
+    __PACKAGE__->meta->make_immutable; # ensure metaclasses loaded
 
-can_ok($meta->get_method('is_anon_class'), 'meta');
+    package Role;
+    use Mouse::Role;
 
+    sub bar {}
+}
+
+{
+    my $metaclass = Class->meta;
+
+    can_ok($metaclass, 'meta');
+
+    can_ok($metaclass->constructor_class, 'meta');
+    can_ok($metaclass->destructor_class, 'meta');
+    can_ok($metaclass->attribute_metaclass, 'meta');
+
+    can_ok($metaclass->get_method('foo'),   'meta');
+    can_ok($metaclass->get_attribute('foo'), 'meta');
+    can_ok($metaclass->get_attribute('foo')->accessor_metaclass, 'meta');
+    can_ok($metaclass->get_attribute('foo')->delegation_metaclass, 'meta');
+}
+
+{
+    my $metarole = Class->meta;
+
+    can_ok($metarole, 'meta');
+
+    can_ok($metarole->get_method('foo'),   'meta');
+}