From f077c28c984788aba01298302a1668f6b9c7829a Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Mon, 31 Jan 2011 20:38:34 -0600 Subject: [PATCH] migrate EMS www_importEvents to FormBuilder --- .../Asset/Wobject/EventManagementSystem.pm | 28 +++++------ t/Asset/Wobject/EventManagementSystem.t | 47 +++++++++++++++++++ 2 files changed, 61 insertions(+), 14 deletions(-) diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index d20a06490..0f0c178de 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -2013,18 +2013,18 @@ sub www_importEvents { } # create the form - my $f = WebGUI::HTMLForm->new( $self->session, action => $self->getUrl("func=importEventsSave"), enctype => 'multipart/form-data' ); + my $f = WebGUI::FormBuilder->new( $self->session, action => $self->getUrl("func=importEventsSave"), enctype => 'multipart/form-data' ); - $f->file( - -label => $i18n->get('choose a file to import'), - -hoverHelp => $i18n->get('import hoverhelp file'), - -name => 'file', + $f->addField( "file", + label => $i18n->get('choose a file to import'), + hoverHelp => $i18n->get('import hoverhelp file'), + name => 'file', ); - $f->yesNo( - -label => $i18n->get('ignore first line'), - -name => 'ignore_first_line', - -hoverHelp => $i18n->get('import hoverhelp first line'), - -defaultValue => scalar $form->param('ignore_first_line'), + $f->addField( "yesNo", + label => $i18n->get('ignore first line'), + name => 'ignore_first_line', + hoverHelp => $i18n->get('import hoverhelp first line'), + defaultValue => scalar $form->param('ignore_first_line'), ); # create the std & meta fields part of the form @@ -2034,7 +2034,7 @@ sub www_importEvents { $importableFields{$field->{name}} = $field->{label}; } my @defaultImportableFields = keys %importableFields; - $f->checkList( + $f->addField( "checkList", vertical => 1, showSelectAllButton => 1, label => 'Fields', @@ -2044,9 +2044,9 @@ sub www_importEvents { value => scalar $form->get('fieldsToImport'), ); - $f->submit(-value=>$i18n->get('import events')); + $f->addField( "submit", name => "submit", value=>$i18n->get('import events')); - return $self->processStyle($page_header.'

'.$f->print); + return $self->processStyle($page_header.'

'.$f->toHtml); } @@ -2127,7 +2127,7 @@ $|=1; foreach my $field (@{$fields}) { next unless $field->{name} ~~ @import; $out->print("\tAdding field ".$field->{label}."\n",1); - my $type = $field->{type}; + my $type = $field->{type} || "Text"; ##Force the use of Form::DateTime and MySQL Format if ($field->{name} eq 'startDate') { $type = 'dateTime'; diff --git a/t/Asset/Wobject/EventManagementSystem.t b/t/Asset/Wobject/EventManagementSystem.t index 9c931ac8d..ac8e7c1fe 100644 --- a/t/Asset/Wobject/EventManagementSystem.t +++ b/t/Asset/Wobject/EventManagementSystem.t @@ -744,3 +744,50 @@ cmp_deeply( 'getEventFieldsForImport contains correct items', ); +#---------------------------------------------------------------------------- +# www_importEvents +my $mech = WebGUI::Test::Mechanize->new( config => WebGUI::Test->file ); +$mech->get_ok('/'); +$mech->session->user({ userId => 3 }); + +$mech->get_ok( $ems->getUrl( 'func=importEvents' ), 'get form to import events' ); +$mech->set_fields( + file_file => WebGUI::Test::collateral( "ems_events.csv" ), + ignore_first_line => 1, +); +# Remove the fields we don't have +my @unticks = qw( assetId vendorId seatsAvailable price eventNumber location relatedBadgeGroups + relatedRibbons +); +for my $val ( @unticks ) { + $mech->untick( 'fieldsToImport', $val ); +} +$mech->click_ok( "submit", "import files" ); + +# Events exist +my $events = $ems->getLineage( ['children'], { + includeOnlyClasses => ['WebGUI::Asset::Sku::EMSTicket'], + returnObjects => 1, +} ); +is( scalar @$events, 2, '2 events added' ); +cmp_deeply( + [ map { $_->get } sort { $a->title cmp $b->title } @$events ], + [ superhashof( + { + title => "One", + description => "Oneness", + startDate => WebGUI::DateTime->new( $session, mysql => '2010-01-01 00:00:00', time_zone => DateTime::TimeZone::Local->TimeZone() )->toMysql, + duration => 2, + } + ), + superhashof( + { + title => 'Two', + description => 'Twoness', + startDate => WebGUI::DateTime->new( $session, mysql => '2010-02-02 00:00:00', time_zone => DateTime::TimeZone::Local->TimeZone() )->toMysql, + duration => 3, + } + ), + ], + 'correct asset props are set' +);