use strict; use warnings; use Test::More; use HTML::FormHandler::Test; # tests rendering an optgroup { package MyApp::Form::Test; use HTML::FormHandler::Moose; extends 'HTML::FormHandler'; has_field 'foo'; has_field 'testop' => ( type => 'Select', multiple => 1, empty_select => '-- Choose --' ); sub options_testop { ( { group => 'First Group', options => [ { value => 1, label => 'One' }, { value => 2, label => 'Two' }, { value => 3, label => 'Three' }, ], }, { group => 'Second Group', options => [ { value => 4, label => 'Four' }, { value => 5, label => 'Five' }, { value => 6, label => 'Six' }, ], }, { value => '6a', label => 'SixA' }, { group => 'Third Group', options => [ { value => 7, label => 'Seven' }, { value => 8, label => 'Eight' }, { value => 9, label => 'Nine' }, ], }, ) } } my $form = MyApp::Form::Test->new; ok( $form, 'form built' ); $form->process ( { foo => 'my_foo', testop => 12 } ); ok( ! $form->validated, 'form validated' ); my $params = { foo => 'my_foo', testop => 8 }; $form->process( $params ); ok( $form->validated, 'form validated' ); my $rendered = $form->field('testop')->render; my $expected = '