Move non-useful, Moose-specific methods into t/lib/Test/Mouse.pm
[gitmo/Mouse.git] / t / 402-attribute-application.t
index d05f818..e4745c5 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 use strict;
 use warnings;
-use Test::More tests => 5;
+use Test::More tests => 11;
 use Test::Exception;
 
 do {
@@ -9,13 +9,14 @@ do {
     use Mouse::Role;
 
     has 'attr' => (
+        is      => 'bare',
         default => 'Role',
     );
 
     no Mouse::Role;
 };
 
-is_deeply(Role->meta->get_attribute('attr'), {default => 'Role'});
+is(Role->meta->get_attribute('attr')->{default}, 'Role');
 
 do {
     package Class;
@@ -33,6 +34,7 @@ do {
     use Mouse::Role;
 
     has 'attr' => (
+        is      => 'bare',
         default => 'Role2',
     );
 
@@ -48,3 +50,39 @@ lives_ok {
 
 is(Class2->meta->get_attribute('attr')->default, 'Role');
 
+lives_ok {
+    package Class3;
+    use Mouse;
+
+    with 'Role';
+
+    has attr => (
+        is      => 'bare',
+        default => 'Class3',
+    );
+};
+
+is(Class3->meta->get_attribute('attr')->default, 'Class3');
+
+lives_ok {
+    package Class::Parent;
+    use Mouse;
+
+    has attr => (
+        is      => 'bare',
+        default => 'Class::Parent',
+    );
+};
+
+is(Class::Parent->meta->get_attribute('attr')->default, 'Class::Parent', 'local class wins over the role');
+
+lives_ok {
+    package Class::Child;
+    use Mouse;
+
+    extends 'Class::Parent';
+
+    with 'Role';
+};
+
+is(Class::Child->meta->get_attribute('attr')->default, 'Role', 'role wins over the parent method');