Resolve a 'failing' test, although it has some TODOs
[gitmo/Mouse.git] / t / 800_shikabased / 005-class_type.t
index b47077c..5b61762 100644 (file)
@@ -1,24 +1,26 @@
 use strict;
 use warnings;
 use Test::More tests => 4;
-
-{
-    package Response::Headers;
-    use Mouse;
-    has 'foo' => ( is => 'rw' );
-}
-
 {
     package Response;
     use Mouse;
-    use Mouse::TypeRegistry;
+    use Mouse::Util::TypeConstraints;
+
+    require t::lib::ClassType_Foo;
 
-    class_type Headers => { class => 'Response::Headers' };
-    coerce 'Headers' => +{
-        HashRef => sub {
-            Response::Headers->new(%{ $_ });
+    # XXX: This below API is different from that of Moose.
+    # class_type() should be class_type 'ClassName';
+    #    class_type 'Headers' => { class => 't::lib::ClassType_Foo' };
+    # this should be subtype Headers => as 't::lib::ClassType_foo';
+    subtype 'Headers'
+        => as 't::lib::ClassType_Foo'
+    ;
+        
+    coerce 'Headers' =>
+        from 'HashRef' => via {
+            t::lib::ClassType_Foo->new(%{ $_ });
         },
-    };
+    ;
 
     has headers => (
         is     => 'rw',
@@ -28,8 +30,8 @@ use Test::More tests => 4;
 }
 
 my $res = Response->new(headers => { foo => 'bar' });
-isa_ok($res->headers, 'Response::Headers');
+isa_ok($res->headers, 't::lib::ClassType_Foo');
 is($res->headers->foo, 'bar');
 $res->headers({foo => 'yay'});
-isa_ok($res->headers, 'Response::Headers');
+isa_ok($res->headers, 't::lib::ClassType_Foo');
 is($res->headers->foo, 'yay');