Shitting all over the application config in the model generator was somewhat unfriend...
t0m [Wed, 27 May 2009 23:40:16 +0000 (00:40 +0100)]
lib/CatalystX/DynamicComponent/ModelsFromConfig.pm
lib/CatalystX/DynamicComponent/ModelsFromConfig/InterfaceRoles.pm
t/06_dynamicmodel_interface.t

index dffefa3..489546c 100644 (file)
@@ -16,7 +16,7 @@ with 'CatalystX::DynamicComponent' => {
         COMPONENT => sub {
             my ($component_class_name, $app, $args) = @_;
 
-            my $class = delete $args->{class};
+            my $class = $args->{class};
             Class::MOP::load_class($class);
            
             $class->new($args);
index 48e329d..467ac88 100644 (file)
@@ -7,7 +7,7 @@ use namespace::autoclean;
 around 'COMPONENT' => sub {
     my ($orig, $component_class_name, $app, $args) = @_;
 
-    my $interface_roles = delete $args->{interface_roles};
+    my $interface_roles = $args->{interface_roles};
     confess("No interface_roles configuration specified for $component_class_name")
         unless $interface_roles && ref($interface_roles) eq 'ARRAY'
             && scalar(@$interface_roles);
@@ -32,7 +32,7 @@ around '_setup_dynamic_model' => sub {
     my ($orig, $app, $class_name, $config, @args) = @_;
     my @roles = @{ delete($config->{roles}) || [] };
     push(@roles, 'CatalystX::DynamicComponent::ModelsFromConfig::InterfaceRoles::COMPONENT');
-    $config->{roles} = \@roles;
+    local $config->{roles} = \@roles;
     $app->$orig($class_name, $config, @args);
 };
 
index 8374ad9..cf71fc9 100644 (file)
@@ -4,7 +4,15 @@ use warnings;
 use FindBin qw/$Bin/;
 use lib "$Bin/lib";
 
-use Test::More tests => 1;
+use Test::More tests => 2;
 
 BEGIN { use_ok('ModelsFromConfigInterfaceApp'); }
 
+is_deeply(ModelsFromConfigInterfaceApp->config, {
+    name => 'ModelsFromConfigInterfaceApp',
+    'Model::One' => {
+        class => 'SomeModelClass',
+        interface_roles => [qw/ SomeModelClassInterface /],
+    },
+}, 'Config is not munged');
+