Import tests for attribute from Mouse's tests
[gitmo/Mouse.git] / t / 020_attributes / failing / 014_misc_attribute_coerce_lazy.t
diff --git a/t/020_attributes/failing/014_misc_attribute_coerce_lazy.t b/t/020_attributes/failing/014_misc_attribute_coerce_lazy.t
new file mode 100644 (file)
index 0000000..ccd8883
--- /dev/null
@@ -0,0 +1,51 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+use Test::Exception;
+
+
+
+{
+    package HTTPHeader;
+    use Mouse;
+
+    has 'array' => (is => 'ro');
+    has 'hash'  => (is => 'ro');
+}
+
+{
+    package Request;
+    use Mouse;
+    use Mouse::Util::TypeConstraints;
+
+    subtype Header =>
+        => as Object
+        => where { $_->isa('HTTPHeader') };
+
+    coerce Header
+        => from ArrayRef
+            => via { HTTPHeader->new(array => $_[0]) }
+        => from HashRef
+            => via { HTTPHeader->new(hash => $_[0]) };
+
+    has 'headers'  => (
+           is      => 'rw',
+           isa     => 'Header',
+           coerce  => 1,
+           lazy    => 1,
+           default => sub { [ 'content-type', 'text/html' ] }
+    );
+}
+
+my $r = Request->new;
+isa_ok($r, 'Request');
+
+lives_ok {
+    $r->headers;
+} '... this coerces and passes the type constraint even with lazy';
+
+
+