test for mutual requires
[gitmo/Moo.git] / xt / moose-does-moo-role.t
index e9c89db..07739da 100644 (file)
@@ -1,8 +1,6 @@
 use strictures 1;
 use Test::More;
-use Test::Exception;
-
-use Moo::HandleMoose;
+use Test::Fatal;
 
 {
    package MooParentRole;
@@ -18,10 +16,14 @@ use Moo::HandleMoose;
    use Moo;
    with 'MooRole';
 
+   has 'some_attr' => (is => 'ro');
+
    package MooRoledMooseClass;
    use Moose;
    with 'MooRole';
 
+   has 'some_attr' => (is => 'ro');
+
    package MooseParent;
    use Moose;
 
@@ -43,15 +45,16 @@ use Moo::HandleMoose;
 
 for my $parent (qw(MooseParent MooParent)) {
    for my $child (qw(MooRoledMooClass MooRoledMooseClass)) {
-      lives_and {
+      is(exception {
          my $o = $parent->new(
             e => $child->new(),
          );
          ok( $o->e->does("MooParentRole"), "$child does parent MooRole" );
          can_ok( $o->e, "role_method" );
-         local $TODO = "multi-level roles are broken with moose" if $child eq "MooRoledMooseClass";
          can_ok( $o->e, "parent_role_method" );
-      } "$parent instantiated with a $child delegate that does a MooRole";
+         ok($o->e->meta->has_method('role_method'), 'Moose knows about role_method');
+         ok($o->e->meta->has_method('parent_role_method'), 'Moose knows about parent_role_method');
+      }, undef);
    }
 }