add support for roles => [] option to Moose::Meta::Create
[gitmo/Moose.git] / t / 010_basics / 013_create.t
1 use strict;
2 use warnings;
3 use Test::More tests => 10;
4 use Test::Exception;
5
6 BEGIN {
7     use_ok('Moose::Meta::Class');
8     use_ok('Moose');
9     use_ok('Moose::Role');
10 }
11
12
13     package Class;
14     use Moose;
15     
16     package Foo;
17     use Moose::Role;
18     sub foo_role_applied { 1 }
19     
20     package Conflicts::With::Foo;
21     use Moose::Role;
22     sub foo_role_applied { 0 }
23
24     package Not::A::Role;
25     sub lol_wut { 42 }
26 }
27
28 my $new_class;
29
30 lives_ok {
31     $new_class = Moose::Meta::Class->create(
32         'Class::WithFoo',
33         superclasses => ['Class'],
34         roles        => ['Foo'],
35     );
36 } 'creating lives';
37 ok $new_class;
38
39 my $with_foo = Class::WithFoo->new;
40
41 ok $with_foo->foo_role_applied;
42 isa_ok $with_foo, 'Class', '$with_foo';
43
44 throws_ok {
45     Moose::Meta::Class->create(
46         'Made::Of::Fail',
47         superclasses => ['Class'],
48         roles => 'Foo', # "oops"
49     );
50 } qr/You must pass an ARRAY ref of roles/;
51
52 ok !Made::Of::Fail->isa('UNIVERSAL'), "did not create Made::Of::Fail";
53
54 dies_ok {
55     Moose::Meta::Class->create(
56         'Continuing::To::Fail',
57         superclasses => ['Class'],
58         roles        => ['Foo', 'Conflicts::With::Foo'],
59     );
60 } 'conflicting roles == death';
61
62 # XXX: Continuing::To::Fail gets created anyway
63