X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fmoose_util%2Fmoose_util_does_role.t;h=1be221d9d2d284729aeb7fc4839efe23606099f2;hb=366abb63a74af7c8a6eb6390f30d60a6bdfca414;hp=26c1176253080c00a82b40940af739918e2d2983;hpb=829433c47061dd70a608bfcd940113c4172b6950;p=gitmo%2FMoose.git diff --git a/t/moose_util/moose_util_does_role.t b/t/moose_util/moose_util_does_role.t index 26c1176..1be221d 100644 --- a/t/moose_util/moose_util_does_role.t +++ b/t/moose_util/moose_util_does_role.t @@ -5,9 +5,7 @@ use warnings; use Test::More; -BEGIN { - use_ok('Moose::Util', ':all'); -} +use Moose::Util ':all'; { package Foo; @@ -43,6 +41,18 @@ BEGIN { with 'Foo'; } +{ + package DoesMethod; + use Moose; + + sub does { + my $self = shift; + my ($role) = @_; + return 1 if $role eq 'Something::Else'; + return $self->SUPER::does(@_); + } +} + # Classes ok(does_role('Bar', 'Foo'), '... Bar does Foo'); @@ -69,14 +79,16 @@ ok(!does_role(1,'Foo'), '... 1 doesnt do Foo'); ok(!does_role('Quux', 'Foo'), '... Quux doesnt do Foo (does not die tho)'); -# TODO: make the below work, maybe? +# overriding the does method works properly + +ok(does_role('DoesMethod', 'Something::Else'), '... can override the does method'); # Self -#ok(does_role('Foo', 'Foo'), '... Foo does do Foo'); +ok(does_role('Foo', 'Foo'), '... Foo does do Foo'); # sub-Roles -#ok(does_role('Foo::Foo', 'Foo'), '... Foo::Foo does do Foo'); +ok(does_role('Foo::Foo', 'Foo'), '... Foo::Foo does do Foo'); done_testing;