1use strict;
2use warnings;
3use Test::More;
4use Catalyst::Utils;
5
6{
7    package MyApp::Controller::SomeController;
8    use Moose;
9    extends 'Catalyst::Controller';
10    with 'CatalystX::Component::Traits';
11    has '+_trait_merge' => (default => 1);
12
13    __PACKAGE__->config( traits => 'Foo' );
14
15    package MyApp::TraitFor::Controller::SomeController::Foo;
16    use Moose::Role;
17    has 'foo' => (is => 'ro');
18
19    package MyApp::TraitFor::Controller::SomeController::Bar;
20    use Moose::Role;
21    has 'bar' => (is => 'ro');
22
23}
24
25ok((my $instance = MyApp::Controller::SomeController->COMPONENT(
26        bless({}, 'Catalyst'),
27        { traits => 'Bar', foo => 'bar', bar => 'baz' }
28    )),
29    'created a component instance');
30
31ok(($instance->does('MyApp::TraitFor::Controller::SomeController::Foo')),
32    'instance had parent ns trait loaded from component config');
33
34ok(($instance->does('MyApp::TraitFor::Controller::SomeController::Bar')),
35    'instance had app ns trait loaded from component config');
36
37is eval { $instance->foo }, 'bar',
38    'trait initialized from component config works';
39
40is eval { $instance->bar }, 'baz',
41    'trait initialized from app config works';
42
43done_testing;
44
45