my $model_prefix = 'Model::';
my $config = $app->config || {};
+ my $myconfig = $config->{'CatalystX::DynamicComponent::ModelsFromConfig'} || {};
foreach my $model_name ( grep { /^$model_prefix/ } keys %$config ) {
+ if (my $inc = $myconfig->{include}) {
+ next unless $model_name =~ /$inc/;
+ }
+ if (my $exc = $myconfig->{exclude}) {
+ next if $model_name =~ /$exc/;
+ }
+
my $model_class_name = $app_name . '::' . $model_name;
$app->_setup_dynamic_model( $model_class_name, $config->{$model_name} );
$config_name =~ s/^[^:]+:://;
# Shallow copy so we don't stuff method refs in config
- my $config = { %{$app->config->{$config_name}} };
+ my $config = { %{$app->config->{$config_name}||{}} };
$config->{methods} = \%controller_methods;
$app->_setup_dynamic_controller( $controller_name, $config );
use strict;
use warnings;
-use Test::More tests => 3;
+use Test::More tests => 6;
use FindBin qw/$Bin/;
use lib "$Bin/lib";
isa_ok $model, 'SomeModelClass';
is $model->say_hello('world'), 'Hello world';
+ok(DynamicAppDemo->model('Two'), 'Have model Two');
+
+ok(!DynamicAppDemo->model('Three'), 'No model Three');
+
+ok(!DynamicAppDemo->model('Four'), 'No model Four');
+
superclasses => [qw/DynamicAppDemo::ControllerBase/],
roles => [qw/DynamicAppDemo::ControllerRole/],
},
+ 'CatalystX::DynamicComponent::ModelsFromConfig' => {
+ include => 'One|Two|Four',
+ exclude => 'Four',
+ },
'Model::One' => {
class => 'SomeModelClass',
},
+ 'Model::Two' => {
+ class => 'SomeModelClass',
+ },
+ 'Model::Three' => {
+ class => 'SomeModelClass',
+ },
+ 'Model::Four' => {
+ class => 'SomeModelClass',
+ },
);
__PACKAGE__->setup();