fixed test
[catagits/Catalyst-Runtime.git] / t / aggregate / unit_core_component_setup_component.t
CommitLineData
03e89d2c 1use strict;
2use warnings;
5e3121a8 3use Test::More;
03e89d2c 4use Moose::Meta::Class;
03e89d2c 5
6my %config = (
7 foo => 42,
8 bar => 'myconf',
9);
10
11Moose::Meta::Class->create( TestAppComponent => (
12 superclasses => ['Catalyst'],
13));
14
15TestAppComponent->config(
16 'Model::With::Config' => { %config },
17);
18
19TestAppComponent->setup_config;
20
21my @comps;
22push @comps, "TestAppComponent::$_" for qw/
23 Without::Component::Sub
24 Model::With::Config
25 Dieing
26 NotBlessed
27 Regular
28/;
29my ($no_sub, $config, $dieing, $not_blessed, $regular) = @comps;
30
31Moose::Meta::Class->create( $no_sub => (
32 superclasses => ['Catalyst::Component'],
33));
34
35Moose::Meta::Class->create( $config => (
36 superclasses => ['Catalyst::Component'],
37 methods => {
38 COMPONENT => sub { bless $_[2] }
39 },
40));
41
42Moose::Meta::Class->create( $dieing => (
43 superclasses => ['Catalyst::Component'],
44 methods => {
45 COMPONENT => sub { die "Could not create component" }
46 },
47));
48
49Moose::Meta::Class->create( $not_blessed => (
50 superclasses => ['Catalyst::Component'],
51 methods => {
52 COMPONENT => sub { {} }
53 },
54));
55
56Moose::Meta::Class->create( $regular => (
57 superclasses => ['Catalyst::Component'],
58 methods => {
59 COMPONENT => sub { shift->new }
60 },
61));
62
63{
64 no warnings 'redefine', 'once';
65 my $message;
66 my $component;
67
68 local *Catalyst::Exception::throw = sub { shift; my %h = @_; $message = $h{message} };
69
70 $component = eval { TestAppComponent->setup_component($no_sub) };
71 ok( !$@, "setup_component doesnt die with $no_sub" );
72 is( $message, undef, "no exception thrown" );
73 isa_ok( $component, $no_sub, "the returned value isa the component" );
74
75 undef $message;
76 $component = eval { TestAppComponent->setup_component($config) };
77 ok( !$@, "setup_component doesnt die with $config" );
78 is( $message, undef, "no exception thrown" );
ba70cf57 79 is_deeply( $component, \%config, "the returned config is correct" );
03e89d2c 80
81 undef $message;
82 $component = eval { TestAppComponent->setup_component($dieing) };
83 ok( !$@, "setup_component doesnt die with $dieing" );
84 like( $message, qr/Could not create component/, "the exception is thrown correctly" );
85
86 undef $message;
87 $component = eval { TestAppComponent->setup_component($not_blessed) };
88 ok( !$@, "setup_component doesnt die with $not_blessed" );
89 isnt( $message, undef, "it throws an exception" );
90
91 undef $message;
92 $component = eval { TestAppComponent->setup_component($regular) };
93 ok( !$@, "setup_component doesnt die with $regular" );
94 is( $message, undef, "no exception thrown" );
95 isa_ok( $component, $regular, "the returned value is correct" );
96}
5e3121a8 97
98done_testing;