diff --git a/lib/WebGUI/Content/Setup.pm b/lib/WebGUI/Content/Setup.pm index 2b08c7628..f51cecbe9 100644 --- a/lib/WebGUI/Content/Setup.pm +++ b/lib/WebGUI/Content/Setup.pm @@ -45,56 +45,6 @@ These subroutines are available from this package: #------------------------------------------------------------------- -=head2 addAsset ( parent, properties ) - -A helper to add assets with less code. - -=head3 parent - -The parent asset to add to. - -=head3 properties - -A hash ref of properties to attach to the asset. One must be className. - -=cut - -sub addAsset { - my $parent = shift; - my $properties = shift; - $properties->{url} = $parent->get("url") . "/" . $properties->{title}; - $properties->{groupIdEdit} = $parent->get("groupIdEdit"); - $properties->{groupIdView} = $parent->get("groupIdView"); - $properties->{ownerUserId} = $parent->get("ownerUserId"); - $properties->{styleTemplateId} = $parent->get("styleTemplateId"); - $properties->{printableStyleTemplateId} = $parent->get("styleTemplateId"); - return $parent->addChild($properties); -} - -#------------------------------------------------------------------- - -=head2 addPage ( parent, title ) - -Adds a page to a parent page. - -=head3 parent - -A parent page asset. - -=head3 title - -The title of the new page. - -=cut - -sub addPage { - my $parent = shift; - my $title = shift; - return addAsset( $parent, { title => $title, className => "WebGUI::Asset::Wobject::Layout", displayTitle => 0 } ); -} - -#------------------------------------------------------------------- - =head2 handler ( session ) Handles a specialState: "init" @@ -111,537 +61,11 @@ sub handler { unless ( $session->setting->get("specialState") eq "init" ) { return undef; } - $session->http->setCacheControl("none"); - my $i18n = WebGUI::International->new( $session, "WebGUI" ); - my ( $output, $legend ) = ""; - if ( $form->process("step") eq "2" ) { - $legend = $i18n->get('company information'); - my $timezone = $form->timeZone("timeZone"); - my $language = $form->selectBox("language"); - - ##update Admin and Visitor users - my $u = WebGUI::User->new( $session, "3" ); - $u->username( $form->process( "username", "text", "Admin" ) ); - $u->profileField( "email", $form->email("email") ); - $u->profileField( "timeZone", $timezone ); - $u->profileField( "language", $language ); - $u->identifier( Digest::MD5::md5_base64( $form->process( "identifier", "password", "123qwe" ) ) ); - - $u = WebGUI::User->new( $session, "1" ); - $u->profileField( "timeZone", $timezone ); - $u->profileField( "language", $language ); - - ##update ProfileField defaults so new users the get the defaults, too - my $properties; - - my $zoneField = WebGUI::ProfileField->new( $session, 'timeZone' ); - $properties = $zoneField->get(); - $properties->{dataDefault} = $timezone; - $zoneField->set($properties); - - my $languageField = WebGUI::ProfileField->new( $session, 'language' ); - $properties = $languageField->get(); - $properties->{dataDefault} = $language; - $languageField->set($properties); - - my $f = WebGUI::HTMLForm->new( $session, action => $session->url->gateway() ); - $f->hidden( name => "step", value => "3" ); - $f->text( - name => "companyName", - value => $session->setting->get("companyName"), - label => $i18n->get(125), - hoverHelp => $i18n->get('125 description'), - ); - $f->email( - name => "companyEmail", - value => $session->setting->get("companyEmail"), - label => $i18n->get(126), - hoverHelp => $i18n->get('126 description'), - ); - $f->url( - name => "companyURL", - value => $session->setting->get("companyURL"), - label => $i18n->get(127), - hoverHelp => $i18n->get('127 description'), - ); - $f->submit; - $output .= $f->print; - } ## end if ( $form->process("step"...)) - elsif ( $session->form->process("step") eq "3" ) { - my $form = $session->form; - $session->setting->set( 'companyName', $form->text("companyName") ) if ( $form->get("companyName") ); - $session->setting->set( 'companyURL', $form->url("companyURL") ) if ( $form->get("companyURL") ); - $session->setting->set( 'companyEmail', $form->email("companyEmail") ) if ( $form->get("companyEmail") ); - $legend = $i18n->get( 'topicName', 'Activity_SendWebguiStats' ); - $output .= '

' . $i18n->get( 'why to send', 'Activity_SendWebguiStats' ) . '

-

' . $i18n->get( 'would you participate', 'Activity_SendWebguiStats' ) . '

-

' - . $i18n->get( 'disable', 'Activity_SendWebguiStats' ) - . '       - ' - . $i18n->get( 'enable', 'Activity_SendWebguiStats' ) - . '

- '; - } ## end elsif ( $session->form->process...) - elsif ( $session->form->process("step") eq "sitestarter" ) { - my $form = $session->form; - WebGUI::Operation::Statistics::www_enableSendWebguiStats($session) if ( $form->get("enableStats") ); - $legend = $i18n->get('site starter title'); - $output .= '

' . $i18n->get('site starter body') . '

-

' - . $i18n->get('no thanks') - . '       - ' . $i18n->get('yes please') . '

- '; - } - elsif ( $session->form->process("step") eq "4" ) { - my $f = WebGUI::HTMLForm->new( $session, action => $session->url->gateway() ); - $f->hidden( name => "step", value => "5", ); - $f->file( name => "logo", label => $i18n->get('logo') ); - $f->submit; - $legend = $i18n->get('upload logo'); - $output .= $f->print; - } - elsif ( $session->form->process("step") eq "5" ) { - my $storageId = $session->form->process( "logo", "image" ); - my $url = $session->url; - my $logoUrl = $url->extras("plainblack.gif"); - if ( defined $storageId ) { - my $storage = WebGUI::Storage->get( $session, $storageId ); - my $importNode = WebGUI::Asset->getImportNode($session); - my $logo = addAsset( - $importNode, { - title => $storage->getFiles->[0], - filename => $storage->getFiles->[0], - isHidden => 1, - storageId => $storageId, - className => "WebGUI::Asset::File::Image", - parameters => 'alt="' . $storage->getFiles->[0] . '"' - } - ); - $logoUrl = $logo->getStorageLocation->getUrl( $logo->get("filename") ); - } - my $style = $session->style; - $style->setLink( $url->extras('/yui/build/container/assets/skins/sam/container.css'), - { type => 'text/css', rel => "stylesheet" } ); - $style->setLink( $url->extras('/yui/build/colorpicker/assets/skins/sam/colorpicker.css'), - { type => 'text/css', rel => "stylesheet" } ); - $style->setScript( $url->extras('/yui/build/yahoo/yahoo-min.js'), { type => 'text/javascript' } ); - $style->setScript( $url->extras('/yui/build/event/event-min.js'), { type => 'text/javascript' } ); - $style->setScript( $url->extras('/yui/build/dom/dom-min.js'), { type => 'text/javascript' } ); - $style->setScript( $url->extras('/yui/build/dragdrop/dragdrop-min.js'), { type => 'text/javascript' } ); - $style->setScript( $url->extras('/yui/build/utilities/utilities.js'), { type => 'text/javascript' } ); - $style->setScript( $url->extras('/yui/build/container/container-min.js'), { type => 'text/javascript' } ); - $style->setScript( $url->extras('/yui/build/slider/slider-min.js'), { type => 'text/javascript' } ); - $style->setScript( $url->extras('/yui/build/colorpicker/colorpicker-min.js'), { type => 'text/javascript' } ); - $style->setLink( $url->extras('/colorpicker/colorpicker.css'), { type => 'text/css', rel => "stylesheet" } ); - $style->setScript( $url->extras('/colorpicker/colorpicker.js'), { type => 'text/javascript' } ); - $style->setScript( $url->extras("/styleDesigner/styleDesigner.js"), { type => "text/javascript" } ); - $style->setLink( $url->extras("/styleDesigner/styleDesigner.css"), - { rel => "stylesheet", type => "text/css" } ); - $legend = $i18n->get("style designer"); - $output .= ' -
- - - - - -
- '; - } ## end elsif ( $session->form->process...) - elsif ( $session->form->process("step") eq "6" ) { - my $importNode = WebGUI::Asset->getImportNode($session); - my $form = $session->form; - my $snippet = '/* auto generated by WebGUI ' . $WebGUI::VERSION . ' */ -.clearFloat { clear: both; } -body { background-color: ' . $form->get("pageBackgroundColor") . '; color: ' . $form->get("contentTextColor") . '} -a { color: ' . $form->get("linkColor") . ';} -a:visited { color: ' . $form->get("visitedLinkColor") . '; } -#editToggleContainer { padding: 1px; } -#utilityLinksContainer { float: right; padding: 1px; } -#pageUtilityContainer { font-size: 9pt; background-color: ' - . $form->get("utilityBackgroundColor") - . '; color: ' - . $form->get("utilityTextColor") . '; } -#pageHeaderContainer { background-color: ' - . $form->get("headerBackgroundColor") - . '; color: ' - . $form->get("headerTextColor") . '; } -#pageHeaderLogoContainer { float: left; padding: 5px; background-color: ' . $form->get("headerBackgroundColor") . ';} -#logo { border: 0px; max-width: 300px; } -#companyNameContainer { float: right; padding: 5px; font-size: 16pt; } -#pageBodyContainer { background-color: ' - . $form->get("contentBackgroundColor") - . '; color: ' - . $form->get("contentTextColor") . '; } -#mainNavigationContainer { min-height: 300px; padding: 5px; float: left; width: 180px; font-size: 10pt; background-color: ' - . $form->get("navigationBackgroundColor") . '; } -#mainNavigationContainer A, #mainNavigationContainer A:link { color: ' . $form->get("navigationTextColor") . '; } -#mainBodyContentContainer { padding: 5px; margin-left: 200px; font-family: serif, times new roman; font-size: 12pt; overflow: auto; } -#pageFooterContainer { text-align: center; background-color: ' - . $form->get("footerBackgroundColor") - . '; color: ' - . $form->get("footerTextColor") . '; } -#copyrightContainer { font-size: 8pt; } -#pageWidthContainer { width: 80%; margin-left: auto; margin-right: auto; font-family: sans-serif, helvetica, arial; border: 3px solid black; } -'; - my $css = addAsset( - $importNode, { - title => "my-style.css", - className => "WebGUI::Asset::Snippet", - snippet => $snippet, - isHidden => 1, - mimeType => "text/css", - } - ); - my $styleTemplate - = ' - - -^Page(title); - ^c; - - - - -^AdminBar; -
-
- -
^AdminToggle;
-
-
-
-
^c;
-
-
-
-
- -
- -
-
-
-
-
©^D(%y); ^c;. ^International(All Rights Reserved);.
-
-
-
- - - - -'; - my $style = addAsset( - $importNode, { - className => "WebGUI::Asset::Template", - title => $i18n->get("My Style"), - isHidden => 1, - namespace => "style", - template => $styleTemplate - } - ); - $session->setting->set( "userFunctionStyleId", $style->getId ); - - # collect new page info - my $f = WebGUI::HTMLForm->new( $session, action => $session->url->gateway() ); - $f->hidden( name => "step", value => "7" ); - $f->hidden( name => "styleTemplateId", value => $style->getId ); - $f->yesNo( name => "contactUs", label => $i18n->get('Contact Us') ); - $f->yesNo( name => "calendar", label => $i18n->get( "assetName", 'Asset_Calendar' ) ); - $f->yesNo( name => "wiki", label => $i18n->get( 'assetName', 'Asset_WikiMaster' ) ); - $f->yesNo( name => "search", label => $i18n->get( "assetName", 'Asset_Search' ) ); - $f->yesNo( name => "aboutUs", label => $i18n->get("About Us") ); - $f->HTMLArea( - name => "aboutUsContent", - richEditId => "PBrichedit000000000002", - value => $i18n->get("Put your about us content here.") - ); - - if ( exists $session->config->get('assets')->{"WebGUI::Asset::Wobject::Collaboration"} ) { - $f->yesNo( name => "news", label => $i18n->get(357) ); - $f->yesNo( name => "forums", label => $i18n->get("Forums") ); - $f->textarea( - name => "forumNames", - subtext => $i18n->get("One forum name per line"), - value => $i18n->get("Support") . "\n" . $i18n->get("General Discussion") - ); - } - $f->submit; - $legend = $i18n->get("Initial Pages"); - $output .= $f->print; - } ## end elsif ( $session->form->process...) - elsif ( $session->form->process("step") eq "7" ) { - my $home = WebGUI::Asset->getDefault($session); - my $form = $session->form; - - # update default site style - foreach my $asset ( @{ $home->getLineage( [ "self", "descendants" ], { returnObjects => 1 } ) } ) { - if ( defined $asset ) { - $asset->update( { styleTemplateId => $form->get("styleTemplateId") } ); - } - } - - # add new pages - if ( $form->get("aboutUs") ) { - my $page = addPage( $home, $i18n->get("About Us") ); - addAsset( - $page, { - title => $i18n->get("About Us"), - isHidden => 1, - className => "WebGUI::Asset::Wobject::Article", - description => $form->get("aboutUsContent"), - } - ); - } - - # add forums - if ( $form->get("forums") ) { - my $page = addPage( $home, $i18n->get("Forums") ); - my $board = addAsset( - $page, { - title => $i18n->get("Forums"), - isHidden => 1, - className => "WebGUI::Asset::Wobject::MessageBoard", - description => $i18n->get("Discuss your ideas and get help from our community."), - } - ); - my $forumNames = $form->get("forumNames"); - $forumNames =~ s/\r//g; - foreach my $forumName ( split "\n", $forumNames ) { - next if $forumName eq ""; - addAsset( - $board, { - title => $forumName, - isHidden => 1, - className => "WebGUI::Asset::Wobject::Collaboration" - } - ); - } - } ## end if ( $form->get("forums"...)) - - # add news - if ( $form->get("news") ) { - my $page = addPage( $home, $i18n->get(357) ); - addAsset( - $page, { - title => $i18n->get(357), - isHidden => 1, - className => "WebGUI::Asset::Wobject::Collaboration", - collaborationTemplateId => "PBtmpl0000000000000112", - allowReplies => 0, - attachmentsPerPost => 5, - postFormTemplateId => "PBtmpl0000000000000068", - threadTemplateId => "PBtmpl0000000000000067", - description => $i18n->get("All the news you need to know."), - } - ); - } ## end if ( $form->get("news"...)) - - # add wiki - if ( $form->get("wiki") ) { - my $page = addPage( $home, $i18n->get( "assetName", 'Asset_WikiMaster' ) ); - addAsset( - $page, { - title => $i18n->get( "assetName", 'Asset_WikiMaster' ), - isHidden => 1, - allowAttachments => 5, - className => "WebGUI::Asset::Wobject::WikiMaster", - description => $i18n->get("Welcome to our wiki. Here you can help us keep information up to date."), - } - ); - } - - # add calendar - if ( $form->get("calendar") ) { - my $page = addPage( $home, $i18n->get( 'assetName', "Asset_Calendar" ) ); - addAsset( - $page, { - title => $i18n->get( 'assetName', "Asset_Calendar" ), - isHidden => 1, - className => "WebGUI::Asset::Wobject::Calendar", - description => $i18n->get("Check out what is going on."), - } - ); - } - - # add contact us - if ( $form->get("contactUs") ) { - my $page = addPage( $home, $i18n->get("Contact Us") ); - my $i18n2 = WebGUI::International->new( $session, "Asset_DataForm" ); - my @fieldConfig = ( { - name => "from", - label => $i18n2->get( "Your Email Address", 'WebGUI' ), - status => "required", - isMailField => 1, - width => 0, - type => "email", - }, {name => "to", - label => $i18n2->get(11), - status => "hidden", - isMailField => 1, - width => 0, - type => "email", - defaultValue => $session->setting->get("companyEmail"), - }, {name => "cc", - label => $i18n2->get(12), - status => "hidden", - isMailField => 1, - width => 0, - type => "email", - }, {name => "bcc", - label => $i18n2->get(13), - status => "hidden", - isMailField => 1, - width => 0, - type => "email", - }, {name => "subject", - label => $i18n2->get(14), - status => "hidden", - isMailField => 1, - width => 0, - type => "text", - defaultValue => $i18n->get(2), - }, {name => "comments", - label => $i18n->get( "comments", 'VersionTag' ), - status => "required", - type => "textarea", - subtext => $i18n->get("Tell us how we can assist you."), - }, - ); - my $dataForm = addAsset( - $page, { - title => $i18n->get("Contact Us"), - isHidden => 1, - className => "WebGUI::Asset::Wobject::DataForm", - description => $i18n->get("We welcome your feedback."), - acknowledgement => - $i18n->get("Thanks for for your interest in ^c;. We will review your message shortly."), - mailData => 1, - fieldConfiguration => JSON::to_json( \@fieldConfig ), - } - ); - } ## end if ( $form->get("contactUs"...)) - - # add search - if ( $form->get("search") ) { - my $page = addPage( $home, $i18n->get( 'assetName', "Asset_Search" ) ); - addAsset( - $page, { - title => $i18n->get( 'assetName', "Asset_Search" ), - isHidden => 1, - className => "WebGUI::Asset::Wobject::Search", - description => $i18n->get("Cannot find what you are looking for? Try our search."), - searchRoot => $home->getId, - } - ); - } - - # commit the working tag - my $working = WebGUI::VersionTag->getWorking($session); - $working->set( { name => "Initial Site Setup" } ); - $working->commit; - - # remove init state - $session->setting->remove('specialState'); - $session->http->setRedirect( $session->url->gateway("?setup=complete") ); - return undef; - } ## end elsif ( $session->form->process...) - else { - $legend = $i18n->get('admin account'); - my $u = WebGUI::User->new( $session, '3' ); - my $f = WebGUI::HTMLForm->new( $session, action => $session->url->gateway() ); - $f->hidden( -name => "step", -value => "2" ); - $f->text( - -name => "username", - -value => $u->username, - -label => $i18n->get(50), - -hoverHelp => $i18n->get('50 setup description'), - ); - $f->text( - -name => "identifier", - -value => "123qwe", - -label => $i18n->get(51), - -hoverHelp => $i18n->get('51 description'), - -subtext => '
(' . $i18n->get("password clear text") . ')
' - ); - $f->email( - -name => "email", - -value => $u->profileField("email"), - -label => $i18n->get(56), - -hoverHelp => $i18n->get('56 description'), - ); - $f->timeZone( - -name => "timeZone", - -value => $u->profileField("timeZone"), - -label => $i18n->get( 'timezone', 'DateTime' ), - -hoverHelp => $i18n->get('timezone help'), - ); - $f->selectBox( - -name => "language", - -value => $u->profileField("language"), - -label => $i18n->get('304'), - -hoverHelp => $i18n->get('language help'), - -options => $i18n->getLanguages(), - ); - $f->submit; - $output .= $f->print; - } ## end else [ if ( $form->process("step"...))] - my $page = ' - - - ' . $i18n->get('WebGUI Initial Configuration') . ' :: ' . $legend . ' - - ' . $session->style->generateAdditionalHeadTags . ' - -

' . $legend . '

' . $output . '
- - '; - $session->http->setMimeType("text/html"); - return $page; -} ## end sub handler + # Dispatch to the setup wizard + my $wiz = WebGUI::Wizard::Setup->new( $session ); + return $wiz->dispatch; +} 1; diff --git a/lib/WebGUI/Content/Wizard.pm b/lib/WebGUI/Content/Wizard.pm index bca5cadbf..5c45aaa6a 100644 --- a/lib/WebGUI/Content/Wizard.pm +++ b/lib/WebGUI/Content/Wizard.pm @@ -1,6 +1,6 @@ package WebGUI::Content::Wizard; -sub process { +sub handler { my ( $session ) = @_; if ( $session->form->get('op') eq 'wizard' && $session->form->get('wizard_class') ) { diff --git a/lib/WebGUI/Wizard.pm b/lib/WebGUI/Wizard.pm index 09f8bf589..2e3d052b9 100644 --- a/lib/WebGUI/Wizard.pm +++ b/lib/WebGUI/Wizard.pm @@ -101,16 +101,20 @@ sub dispatch { # See if we process a form if ( my $step = $self->getCurrentStep ) { + $self->session->log->info( "Processing " . $step ); # First fold in the new form bits $self->thaw; my $processSub = $self->can( 'www_' . $step . 'Save' ); my $errorMessage = $processSub->($self); if ($errorMessage) { + $self->session->log->info( "Error in " . $step ); my $formSub = $self->can( 'www_' . $step ); return $self->wrapStyle( $errorMessage . $formSub->($self) ); } else { my $step = $self->getNextStep; + $self->session->log->info( "Showing next step: " . $step ); + $self->setCurrentStep( $step ); my $formSub = $self->can( 'www_' . $step ); my $output = $formSub->($self); $self->freeze; @@ -121,7 +125,10 @@ sub dispatch { # Starting over $self->{_params} = {}; $self->freeze; - my $formSub = $self->can( 'www_' . $self->_get_steps->[0] ); + my $step = $self->_get_steps->[0]; + $self->setCurrentStep( $step ); + $self->session->log->info( "Starting wizard: " . $step ); + my $formSub = $self->can( 'www_' . $step ); my $output = $formSub->($self); $self->freeze; return $self->wrapStyle( $output ); @@ -180,36 +187,30 @@ Get the name of the current step. sub getCurrentStep { my ( $self ) = @_; - return $self->{_step} || $self->session->form->get( 'wizard_step' ); + if ( $self->{_step} ) { + return $self->{_step}; + } + elsif ( $self->session->form->get('wizard_class') eq blessed($self) ) { + return $self->session->form->get('wizard_step'); + } + return; # No step, so start at the beginning } #---------------------------------------------------------------------------- -=head2 getFormEnd ( ) +=head2 getForm ( [step] ) -Get the end of the form, including the tag +Get a WebGUI::HTMLForm object for a given step, defaulting to the current step. =cut -sub getFormEnd { - my ( $self ) = @_; - return WebGUI::Form::formFooter; -} - -#---------------------------------------------------------------------------- - -=head2 getFormStart ( [step] ) - -Get the start of a form for a given step, defaulting to the current step. - -=cut - -sub getFormStart { +sub getForm { my ( $self, $step ) = @_; $step ||= $self->getCurrentStep; - return WebGUI::Form::formHeader( $self->session, { + my $form = WebGUI::HTMLForm->new( $self->session, action => '?op=wizard;wizard_class=' . blessed( $self ) . ';wizard_step=' . $step, - } ); + ); + return $form; } #---------------------------------------------------------------------------- @@ -281,7 +282,7 @@ parameters. sub thaw { my ( $self ) = @_; my $json = $self->session->scratch->get( $self->getCacheKey ); - return $self->{_params} = JSON->new->decode( $json ); + return $self->{_params} = $json ? JSON->new->decode( $json ) : {}; } #---------------------------------------------------------------------------- diff --git a/t/Content/Wizard.t b/t/Content/Wizard.t index e8e994040..1b654810b 100644 --- a/t/Content/Wizard.t +++ b/t/Content/Wizard.t @@ -35,13 +35,13 @@ plan tests => 3; # Increment this number for each test you create use_ok( 'WebGUI::Content::Wizard' ); -ok( !WebGUI::Content::Wizard::process( $session ), "Declines correctly" ); +ok( !WebGUI::Content::Wizard::handler( $session ), "Declines correctly" ); $session->request->setup_body( { op => 'wizard', wizard_class => 'WebGUI::Wizard::HelloWorld', } ); -is( WebGUI::Content::Wizard::process( $session ), "Hello World!\n", "Accepts request and returns response" ); +is( WebGUI::Content::Wizard::handler( $session ), "Hello World!\n", "Accepts request and returns response" ); package WebGUI::Wizard::HelloWorld; diff --git a/t/Wizard.t b/t/Wizard.t index b4076bbab..ad534a1bf 100644 --- a/t/Wizard.t +++ b/t/Wizard.t @@ -51,16 +51,14 @@ is( $wizard->getCurrentStep, "one", "SetCurrentStep" ); #---------------------------------------------------------------------------- # Form Start and End -my $o = $wizard->getFormStart; -like( $o, qr/
getForm; +isa_ok( $f, 'WebGUI::HTMLForm' ); +my $html = $f->print; +like( $html, qr/wizard_class.+WebGUI::Wizard/, 'getFormStart wizard_class' ); +like( $html, qr/wizard_step.+one/, 'getFormStart wizard_step' ); -$o = $wizard->getFormStart( "two" ); -like( $o, qr/wizard_step.+two/, 'getFormStart wizard_step override step' ); - -$o = $wizard->getFormEnd; -like( $o, qr{
}, 'getFormEnd' ); +$html = $wizard->getForm( "two" )->print; +like( $html, qr/wizard_step.+two/, 'getFormStart wizard_step override step' ); #---------------------------------------------------------------------------- # Steps @@ -69,7 +67,13 @@ $wizard = WebGUI::Wizard::Test->new( $session ); $session->request->setup_body( { wizard_step => "one", } ); -is( $wizard->getCurrentStep, "one", "getCurrentStep from form" ); +is( $wizard->getCurrentStep, undef, "getCurrentStep requires correct wizard_class"); + +$session->request->setup_body( { + wizard_class => 'WebGUI::Wizard::Test', + wizard_step => 'one', +} ); +is( $wizard->getCurrentStep, 'one', 'getCurrent step from form' ); is( $wizard->getNextStep, "two", "getNextStep" ); is( $wizard->getNextStep( "three" ), "four", "getNextStep with arg" );