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