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