pod for everything
[gitmo/MooseX-ClassAttribute.git] / t / lib / SharedTests.pm
index 30928d0..d9e6cca 100644 (file)
@@ -9,19 +9,18 @@ use Test::More;
 my $HasMXAH;
 BEGIN
 {
-    if ( eval 'use MooseX::AttributeHelpers; 1;' )
+    if ( eval 'use MooseX::AttributeHelpers 0.13; 1;' )
     {
         $HasMXAH = 1;
     }
 }
 
-plan tests => 25;
-
+sub HasMXAH { $HasMXAH }
 
 {
     package HasClassAttribute;
 
-    use Moose;
+    use Moose qw( has );
     use MooseX::ClassAttribute;
 
     use vars qw($Lazy);
@@ -67,10 +66,13 @@ plan tests => 25;
         ( is      => 'rw',
           isa     => 'Delegatee',
           handles => [ 'units', 'color' ],
+          # if it's not lazy it makes a new object before we define
+          # Delegatee's attributes.
+          lazy    => 1,
           default => sub { Delegatee->new() },
         );
 
-    if ($HasMXAH)
+    if ( SharedTests->HasMXAH() )
     {
         class_has 'Mapping' =>
             ( metaclass => 'Collection::Hash',
@@ -93,7 +95,6 @@ plan tests => 25;
         );
 
     no Moose;
-    no MooseX::ClassAttribute;
 
     sub BUILD
     {
@@ -107,7 +108,6 @@ plan tests => 25;
         my $class = shift;
 
         $class->meta()->make_immutable();
-        MooseX::ClassAttribute::container_class()->meta()->make_immutable();
         Delegatee->meta()->make_immutable();
     }
 }
@@ -126,6 +126,8 @@ plan tests => 25;
         ( is      => 'ro',
           default => 'blue',
         );
+
+    no Moose;
 }
 
 {
@@ -138,10 +140,19 @@ plan tests => 25;
 
     class_has '+ReadOnlyAttribute' =>
         ( default => 30 );
+
+    class_has 'YetAnotherAttribute' =>
+        ( is      => 'ro',
+          default => 'thing',
+        );
+
+    no Moose;
 }
 
 sub run_tests
 {
+    plan tests => 24;
+
     local $Test::Builder::Level = $Test::Builder::Level + 1;
 
     {
@@ -228,15 +239,10 @@ sub run_tests
             'units() delegates to Delegatee and returns 5' );
     }
 
-    {
-        ok( ! HasClassAttribute->can('class_has'),
-            q{'no MooseX::ClassAttribute' remove class_has from HasClassAttribute} );
-    }
-
  SKIP:
     {
         skip 'These tests require MooseX::AttributeHelpers', 4
-            unless $HasMXAH;
+            unless SharedTests->HasMXAH();
 
         my @ids = HasClassAttribute->IdsInMapping();
         is( scalar @ids, 0,