From a4ee31feef92012548248879878e3f7fb3afb3cf Mon Sep 17 00:00:00 2001 From: Paul Driver Date: Tue, 19 Jul 2011 16:38:17 -0500 Subject: [PATCH] Re-fixed #11379, with tests this time. --- lib/WebGUI/Asset.pm | 3 ++- t/Asset/editFormOverride.t | 42 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 t/Asset/editFormOverride.t diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index b789157bb..c669e2441 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -1226,7 +1226,8 @@ sub setupFormField { my $overrideTab = delete $overrideParams{tab}; $tab = $overrideTab if defined $overrideTab; foreach my $key (keys %overrideParams) { - $params{"-$key"} = $overrideParams{$key}; + (my $canon = $key) =~ s/^-//; + $params{$canon} = $overrideParams{$key}; } } diff --git a/t/Asset/editFormOverride.t b/t/Asset/editFormOverride.t new file mode 100644 index 000000000..1edecdbcf --- /dev/null +++ b/t/Asset/editFormOverride.t @@ -0,0 +1,42 @@ +use warnings; +use strict; + +use FindBin; +use lib "$FindBin::Bin/../lib"; +use lib "$FindBin::Bin/../t/lib"; + +use WebGUI::Test; +use WebGUI::Asset; +use Test::More tests => 2; +use Monkey::Patch qw(patch_class); + +my $session = WebGUI::Test->session; +WebGUI::Test->originalConfig('assets/WebGUI::Asset::Wobject::Layout'); +my $asset = WebGUI::Asset->getTempspace($session)->addChild( + { + className => 'WebGUI::Asset::Wobject::Layout', + } +); + +sub capture { + my $save; + my $patch = patch_class 'WebGUI::Form::Control' => new => sub { + my $orig = shift; + my $self = $orig->(@_); + my $name = $self->get('name'); + $save = $self if $name && $name eq 'assetsToHide'; + return $self; + }; + $asset->getEditForm; +#use Data::Dumper::Concise; +#print STDERR '# ' . Dumper $save->{_params}; + return $save; +} + +my $config = $session->config; +my $pfx = 'assets/WebGUI::Asset::Wobject::Layout/fields/assetsToHide'; +$config->set("$pfx/uiLevel", 1); +is capture->get('uiLevel'), 1; + +$config->set("$pfx/uiLevel", "2"); +is capture->get('uiLevel'), 2;