Fix various tests for new Mouse
[gitmo/Mouse.git] / t / 800_shikabased / 010-isa-or.t
index 8708ae3..b912815 100644 (file)
@@ -5,16 +5,19 @@ use Test::More tests => 18;
 {   
     package Foo;
     use Mouse;
-    use Mouse::TypeRegistry;
-    subtype Baz => where { defined($_) && $_ eq 'Baz' };
+    use Mouse::Util::TypeConstraints;
+    type Baz => where { defined($_) && $_ eq 'Baz' };
+
     coerce Baz => from 'ArrayRef', via { 'Baz' };
+
     has 'bar' => ( is => 'rw', isa => 'Str | Baz | Undef', coerce => 1 );
 }
 
 eval {
     Foo->new( bar => +{} );
 };
-ok $@, 'not got an object';
+like($@, qr/^Attribute \(bar\) does not pass the type constraint because: Validation failed for 'Str\|Baz\|Undef' failed with value HASH\(\w+\)/, 'type constraint and coercion failed')
+    or diag "\$@='$@'";
 
 eval {
     isa_ok(Foo->new( bar => undef ), 'Foo');
@@ -32,7 +35,7 @@ my $f = Foo->new;
 eval {
     $f->bar([]);
 };
-ok !$@;
+ok !$@, $@;
 is $f->bar, 'Baz', 'bar is baz (coerce from ArrayRef)';
 
 eval {
@@ -51,12 +54,12 @@ is $f->bar, undef, 'bar is undef';
 {   
     package Bar;
     use Mouse;
-    use Mouse::TypeRegistry;
+    use Mouse::Util::TypeConstraints;
 
-    subtype 'Type1' => where { defined($_) && $_ eq 'Name' };
+    type 'Type1' => where { defined($_) && $_ eq 'Name' };
     coerce 'Type1', from 'Str', via { 'Names' };
 
-    subtype 'Type2' => where { defined($_) && $_ eq 'Group' };
+    type 'Type2' => where { defined($_) && $_ eq 'Group' };
     coerce 'Type2', from 'Str', via { 'Name' };
 
     has 'foo' => ( is => 'rw', isa => 'Type1|Type2', coerce => 1 );
@@ -69,23 +72,23 @@ is $foo->foo, 'Name', 'foo is Name';
 
 {
     package KLASS;
-    sub new { bless {}, shift };
+    use Mouse;
 }
 {   
-    package Baz;
+    package Funk;
     use Mouse;
-    use Mouse::TypeRegistry;
+    use Mouse::Util::TypeConstraints;
 
-    subtype 'Type3' => where { defined($_) && $_ eq 'Name' };
+    type 'Type3' => where { defined($_) && $_ eq 'Name' };
     coerce 'Type3', from 'CodeRef', via { 'Name' };
 
     has 'foo' => ( is => 'rw', isa => 'Type3|KLASS|Undef', coerce => 1 );
 }
 
-eval { Baz->new( foo => 'aaa' ) };
+eval { Funk->new( foo => 'aaa' ) };
 like $@, qr/Attribute \(foo\) does not pass the type constraint because: Validation failed for 'Type3\|KLASS\|Undef' failed with value aaa/;
 
-my $k = Baz->new;
+my $k = Funk->new;
 ok $k, 'got an object 4';
 $k->foo(sub {});
 is $k->foo, 'Name', 'foo is Name';