Remove MooX::Types from xt tests
Graham Knop [Sun, 14 Jul 2013 10:45:54 +0000 (06:45 -0400)]
Having MooX::Types in the xt tests creates a circular dependency for
developers.  While this isn't strictly a problem, we can easily test the
type inflation code without using it.

xt/type-inflate-coercion.t [moved from xt/moox-types-coercion.t with 62% similarity]
xt/type-inflate.t [moved from xt/moox-types.t with 62% similarity]

similarity index 62%
rename from xt/moox-types-coercion.t
rename to xt/type-inflate-coercion.t
index 28ed12c..4d1230a 100644 (file)
@@ -2,15 +2,25 @@ use strictures 1;
 use Test::More;
 use Test::Fatal;
 
+sub ArrayRef {
+  my $type = sub {
+    die unless ref $_[0] && ref $_[0] eq 'ARRAY';
+  };
+  $Moo::HandleMoose::TYPE_MAP{$type} = sub {
+    require Moose::Util::TypeConstraints;
+    Moose::Util::TypeConstraints::find_type_constraint("ArrayRef");
+  };
+  return ($type, @_);
+}
+
 {
   package ClassWithTypes;
   $INC{'ClassWithTypes.pm'} = __FILE__;
   use Moo;
-  use MooX::Types::MooseLike::Base qw(ArrayRef);
 
-  has split_comma => (is => 'ro', isa => ArrayRef, coerce => sub { [ split /,/, $_[0] ] } );
-  has split_space => (is => 'ro', isa => ArrayRef, coerce => sub { [ split / /, $_[0] ] } );
-  has bad_coerce => (is => 'ro', isa => ArrayRef, coerce => sub { $_[0] } );
+  has split_comma => (is => 'ro', isa => ::ArrayRef, coerce => sub { [ split /,/, $_[0] ] } );
+  has split_space => (is => 'ro', isa => ::ArrayRef, coerce => sub { [ split / /, $_[0] ] } );
+  has bad_coerce => (is => 'ro', isa => ::ArrayRef, coerce => sub { $_[0] } );
 }
 
 my $o = ClassWithTypes->new(split_comma => 'a,b c,d', split_space => 'a,b c,d');
similarity index 62%
rename from xt/moox-types.t
rename to xt/type-inflate.t
index 162ed5d..e048fa9 100644 (file)
@@ -6,8 +6,30 @@ use Test::More;
 
   use Moo::Role;
   use Sub::Quote;
-  use MooX::Types::MooseLike::Base qw(Str);
-  use MooX::Types::MooseLike::Numeric qw(PositiveInt);
+  use Moo::HandleMoose ();
+
+  sub Str {
+    my $type = sub {
+      die unless defined $_[0] && !ref $_[0];
+    };
+    $Moo::HandleMoose::TYPE_MAP{$type} = sub {
+      require Moose::Util::TypeConstraints;
+      Moose::Util::TypeConstraints::find_type_constraint("Str");
+    };
+    return ($type, @_);
+  }
+  sub PositiveInt {
+    my $type = sub {
+      die unless defined $_[0] && !ref $_[0] && $_[0] =~ /^-?\d+/;
+    };
+    $Moo::HandleMoose::TYPE_MAP{$type} = sub {
+      require Moose::Util::TypeConstraints;
+      require MooseX::Types::Common::Numeric;
+      Moose::Util::TypeConstraints::find_type_constraint(
+        "MooseX::Types::Common::Numeric::PositiveInt");
+    };
+    return ($type, @_);
+  }
 
   has named_type => (
     is => 'ro',