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