From affafb00384a3a924bfb3725c8ac924e983e53f4 Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Tue, 25 Jan 2011 15:08:15 -0600 Subject: [PATCH] migrate Subscription create batch form to FormBuilder --- lib/WebGUI/Asset/Sku/Subscription.pm | 64 +++++++++++----------- t/Asset/Sku/Subscription.t | 81 +++++++++++++++++++++++++--- 2 files changed, 105 insertions(+), 40 deletions(-) diff --git a/lib/WebGUI/Asset/Sku/Subscription.pm b/lib/WebGUI/Asset/Sku/Subscription.pm index 76d55e991..53a05c1ec 100644 --- a/lib/WebGUI/Asset/Sku/Subscription.pm +++ b/lib/WebGUI/Asset/Sku/Subscription.pm @@ -582,45 +582,45 @@ sub www_createSubscriptionCodeBatch { my $errorMessage = $i18n->get('create batch error').'' if ($error); # Generate the properties form for this subscription code batch - my $f = WebGUI::HTMLForm->new( $session ); - $f->submit; - $f->hidden( - -name => 'func', - -value => 'createSubscriptionCodeBatchSave' + my $f = WebGUI::FormBuilder->new( $session, action => $self->getUrl ); + $f->addField( "submit", name => "submit" ); + $f->addField( "hidden", + name => 'func', + value => 'createSubscriptionCodeBatchSave' ); - $f->integer( - -name => 'noc', - -label => $i18n->get('noc'), - -hoverHelp => $i18n->get('noc description'), - -value => $session->form->process("noc") || 1 + $f->addField( "integer", + name => 'noc', + label => $i18n->get('noc'), + hoverHelp => $i18n->get('noc description'), + value => $session->form->process("noc") || 1 ); - $f->integer( - -name => 'codeLength', - -label => $i18n->get('code length'), - -hoverHelp => $i18n->get('code length description'), - -value => $session->form->process("codeLength") || 64 + $f->addField( "integer", + name => 'codeLength', + label => $i18n->get('code length'), + hoverHelp => $i18n->get('code length description'), + value => $session->form->process("codeLength") || 64 ); - $f->interval( - -name => 'expires', - -label => $i18n->get('codes expire'), - -hoverHelp => $i18n->get('codes expire description'), - -value => $session->form->process("expires") || $session->datetime->intervalToSeconds(1, 'months') + $f->addField( "interval", + name => 'expires', + label => $i18n->get('codes expire'), + hoverHelp => $i18n->get('codes expire description'), + value => $session->form->process("expires") || $session->datetime->intervalToSeconds(1, 'months') ); - $f->text( - -name => 'name', - -label => $i18n->get('batch name'), - -hoverHelp => $i18n->get('batch name description'), - -value => $session->form->process('name'), + $f->addField( "text", + name => 'name', + label => $i18n->get('batch name'), + hoverHelp => $i18n->get('batch name description'), + value => $session->form->process('name'), ); - $f->textarea( - -name => 'description', - -label => $i18n->get('batch description'), - -hoverHelp => $i18n->get('batch description description'), - -value => $session->form->process("description"), + $f->addField( "textarea", + name => 'description', + label => $i18n->get('batch description'), + hoverHelp => $i18n->get('batch description description'), + value => $session->form->process("description"), ); - $f->submit; + $f->addField( "submit", name => "submit" ); - return $self->getAdminConsoleWithSubmenu->render( $errorMessage.$f->print, $i18n->get('create batch menu') ); + return $errorMessage.$f->toHtml; } #------------------------------------------------------------------- diff --git a/t/Asset/Sku/Subscription.t b/t/Asset/Sku/Subscription.t index 860ed641c..474fdbae9 100644 --- a/t/Asset/Sku/Subscription.t +++ b/t/Asset/Sku/Subscription.t @@ -17,6 +17,7 @@ use strict; use Test::More; use Test::Deep; use WebGUI::Test; # Must use this before any other WebGUI modules +use WebGUI::Test::Mechanize; use WebGUI::Session; use WebGUI::Asset; use WebGUI::Asset::Sku::Subscription; @@ -25,19 +26,19 @@ use WebGUI::Asset::Sku::Subscription; # Init my $session = WebGUI::Test->session; - -#---------------------------------------------------------------------------- -# Tests - -plan tests => 4; # Increment this number for each test you create - -#---------------------------------------------------------------------------- -# put your tests here my $group = WebGUI::Group->new($session, 'new'); WebGUI::Test->addToCleanup($group); my $user = WebGUI::User->create($session); WebGUI::Test->addToCleanup($user); + +#---------------------------------------------------------------------------- +# Tests + +plan tests => 9; # Increment this number for each test you create + +#---------------------------------------------------------------------------- +# put your tests here my $sku = WebGUI::Test->asset( className => "WebGUI::Asset::Sku::Subscription", title => "Test Subscription", @@ -65,3 +66,67 @@ cmp_deeply( num(2*$sku->getExpirationOffset, 10), "... increments user's expiration offset when the subscription is non-recurring and they are already a group member" ); + +#---------------------------------------------------------------------------- +# www_createSubscriptionBatch +my $mech = WebGUI::Test::Mechanize->new( config => WebGUI::Test->file ); +$mech->get_ok( '/' ); +$mech->session->user({ userId => 3 }); +$mech->get_ok( $sku->getUrl( 'func=createSubscriptionCodeBatch' ) ); +$mech->submit_form_ok( { + fields => { + noc => 2, + codeLength => 20, + expires => 60 * 60 * 24 * 14, # 14 days + name => "Paycheck", + description => "Sign up to get your paycheck!", + }, +}, 'generate subscription codes' ); + +my $batches = $session->db->buildArrayRefOfHashRefs( + "SELECT * FROM Subscription_codeBatch WHERE subscriptionId=?", + [ $sku->getId ], +); +cmp_deeply( $batches, + [ + { + name => "Paycheck", + description => "Sign up to get your paycheck!", + expirationDate => ignore(), + dateCreated => ignore(), + subscriptionId => $sku->getId, + batchId => ignore(), + }, + ], + "code batch got created", +); + +my $codes = $session->db->buildArrayRefOfHashRefs( + "SELECT * FROM Subscription_code WHERE batchId=?", + [ $batches->[0]->{batchId} ], +); +cmp_deeply( $codes, + [ + { + code => ignore(), + batchId => $batches->[0]->{batchId}, + status => 'Unused', + dateUsed => 0, + usedBy => 0, + }, + { + code => ignore(), + batchId => $batches->[0]->{batchId}, + status => 'Unused', + dateUsed => 0, + usedBy => 0, + }, + ], + "codes got created", +); + + + + + +