diff --git a/lib/WebGUI/Shop/PayDriver.pm b/lib/WebGUI/Shop/PayDriver.pm index 2750a9b34..03ef8bdc3 100644 --- a/lib/WebGUI/Shop/PayDriver.pm +++ b/lib/WebGUI/Shop/PayDriver.pm @@ -423,7 +423,6 @@ Returns the configuration form for the options of this plugin. sub getEditForm { my $self = shift; - my $definition = $self->definition($self->session); my $form = WebGUI::HTMLForm->new($self->session); $form->submit; @@ -432,6 +431,15 @@ sub getEditForm { name => 'className', value => $self->className, ); + tie my %form_options, 'Tie::IxHash'; + foreach my $property_name ($self->getProperties) { + my $property = $self->meta->find_attribute_by_name($property_name); + $form_options{$property_name} = { + value => $self->$property_name, + %{ $self->getFormProperties($property_name)}, + }; + } + my $definition = [ { properties => \%form_options }, ]; $form->dynamicForm($definition, 'properties', $self); return $form; @@ -535,9 +543,9 @@ sub processPayment { #------------------------------------------------------------------- -=head2 processPropertiesFromFormPost ( ) +=head2 processTemplate ( ) -Updates pay driver with data from Form. +Common code for processing a template and doing exception handling. =cut diff --git a/t/Shop/PayDriver.t b/t/Shop/PayDriver.t index 604933b6f..2422b2bdd 100644 --- a/t/Shop/PayDriver.t +++ b/t/Shop/PayDriver.t @@ -176,77 +176,77 @@ isa_ok ($cart, 'WebGUI::Shop::Cart', 'getCart returns an instantiated WebGU # ####################################################################### -#my $form = $driver->getEditForm; -# -#isa_ok ($form, 'WebGUI::HTMLForm', 'getEditForm returns an HTMLForm object'); -# -#my $html = $form->print; -# -###Any URL is fine, really -#my @forms = HTML::Form->parse($html, 'http://www.webgui.org'); -#is (scalar @forms, 1, 'getEditForm generates just 1 form'); -# -#my @inputs = $forms[0]->inputs; -#is (scalar @inputs, 11, 'getEditForm: the form has 11 controls'); -# -#my @interestingFeatures; -#foreach my $input (@inputs) { -# my $name = $input->name; -# my $type = $input->type; -# push @interestingFeatures, { name => $name, type => $type }; -#} -# -#cmp_deeply( -# \@interestingFeatures, -# [ -# { -# name => 'webguiCsrfToken', -# type => 'hidden', -# }, -# { -# name => undef, -# type => 'submit', -# }, -# { -# name => 'shop', -# type => 'hidden', -# }, -# { -# name => 'method', -# type => 'hidden', -# }, -# { -# name => 'do', -# type => 'hidden', -# }, -# { -# name => 'paymentGatewayId', -# type => 'hidden', -# }, -# { -# name => 'className', -# type => 'hidden', -# }, -# { -# name => 'label', -# type => 'text', -# }, -# { -# name => 'enabled', -# type => 'radio', -# }, -# { -# name => 'groupToUse', -# type => 'option', -# }, -# { -# name => '__groupToUse_isIn', -# type => 'hidden', -# }, -# ], -# 'getEditForm made the correct form with all the elements' -# -#); +my $form = $driver->getEditForm; + +isa_ok ($form, 'WebGUI::HTMLForm', 'getEditForm returns an HTMLForm object'); + +my $html = $form->print; + +##Any URL is fine, really +my @forms = HTML::Form->parse($html, 'http://www.webgui.org'); +is (scalar @forms, 1, 'getEditForm generates just 1 form'); + +my @inputs = $forms[0]->inputs; +is (scalar @inputs, 11, 'getEditForm: the form has 11 controls'); + +my @interestingFeatures; +foreach my $input (@inputs) { + my $name = $input->name; + my $type = $input->type; + push @interestingFeatures, { name => $name, type => $type }; +} + +cmp_deeply( + \@interestingFeatures, + [ + { + name => 'webguiCsrfToken', + type => 'hidden', + }, + { + name => undef, + type => 'submit', + }, + { + name => 'shop', + type => 'hidden', + }, + { + name => 'method', + type => 'hidden', + }, + { + name => 'do', + type => 'hidden', + }, + { + name => 'paymentGatewayId', + type => 'hidden', + }, + { + name => 'className', + type => 'hidden', + }, + { + name => 'label', + type => 'text', + }, + { + name => 'enabled', + type => 'radio', + }, + { + name => 'groupToUse', + type => 'option', + }, + { + name => '__groupToUse_isIn', + type => 'hidden', + }, + ], + 'getEditForm made the correct form with all the elements' + +); #######################################################################