X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=xt%2Fmoo-does-moose-role.t;h=b995e44fd2ae1b4e64bfd949d686e612b34aebf6;hb=98b32d9228567928c766d61d7f244331c3838fa0;hp=1fd7c573548be03a958df81aba08ea06812dc1db;hpb=b826c41baa95eb7fa3d3eb2e4282bb7526939e2a;p=gitmo%2FMoo.git diff --git a/xt/moo-does-moose-role.t b/xt/moo-does-moose-role.t index 1fd7c57..b995e44 100644 --- a/xt/moo-does-moose-role.t +++ b/xt/moo-does-moose-role.t @@ -1,5 +1,6 @@ use strictures 1; use Test::More; +use Test::Fatal; BEGIN { package Ker; @@ -239,16 +240,52 @@ is( Plonker->meta->find_attribute_by_name('kk')->documentation, use Moose::Role; has 'extra_attr' => (is => 'ro'); + has 'extra_attr_noinit' => (is => 'ro', init_arg => undef); } { + local $SIG{__WARN__} = sub { fail "warning: $_[0]" }; package UsingMooseTrait; use Moo; - has one => (is => 'ro', traits => ['MooseAttrTrait'], extra_attr => 'one'); + has one => ( + is => 'ro', + traits => ['MooseAttrTrait'], + extra_attr => 'one', + extra_attr_noinit => 'two', + ); +} + +ok( UsingMooseTrait->meta + ->find_attribute_by_name('one')->can('extra_attr'), + 'trait was properly applied'); +is( UsingMooseTrait->meta->find_attribute_by_name('one') + ->extra_attr, + 'one', + 'trait attributes maintain values'); + +{ + package NeedTrap; + use Moo::Role; + + requires 'trap'; } -ok(UsingMooseTrait->meta->find_attribute_by_name('one')->can('extra_attr'), 'trait was properly applied'); -is(UsingMooseTrait->meta->find_attribute_by_name('one')->extra_attr, 'one', 'trait attributes maintain values'); +is exception { + package Splattrap; + use Moo; + sub monkey {} + + with qw(Splat NeedTrap); +}, undef, 'requires satisfied by Moose attribute composed at the same time'; + +{ + package HasMonkey; + use Moo; + sub monkey {} +} +is exception { + Moo::Role->create_class_with_roles('HasMonkey', 'Splat', 'NeedTrap'); +}, undef, ' ... and when created by create_class_with_roles'; done_testing;