[html-formfu] Standalone testing with FormFu
Carl Franks
fireartist at gmail.com
Mon Sep 24 11:06:37 GMT 2007
On 24/09/2007, Zbigniew Lukasiak <zzbbyy at gmail.com> wrote:
> On 9/24/07, Carl Franks <fireartist at gmail.com> wrote:
> > On 24/09/2007, Zbigniew Lukasiak <zzbbyy at gmail.com> wrote:
> > > This thread reminds me of my other idea - how about letting the form
> > > to load the config from a string instead of a file? This would let
> > > you create some more self-containing tests.
> >
> > Can you give an example of what you're thinking of?
>
> Sure. When I write tests I need to create two files - the test itself
> and the config file. For example - this is my test:
>
> my $form = HTML::FormFu->new( { stash => { schema => $schema } } );
> $form->load_config_file('t/var/config.yml');
> my $by_pkey = $form->get_element( { name => 'by_pkey' } );
> my $options = $by_pkey->_options;
> is ( scalar @$options, 3, 'Number of options' );
>
> It would be simpler if I could provide the config directly in the test:
> my $form = HTML::FormFu->new( { stash => { schema => $schema } } );
> my $config = "
> ---
> elements:
> - type: MySelect
> name: by_pkey
> resultset: User
> search_attr:
> order_by:
> - id
> - type: MySelect
> name: name
> resultset: User
> presentation: name
> search_attr:
> order_by:
> - id
> - type: MySelect
> name: where
> resultset: User
> presentation: name
> search_attr:
> where:
> id: 3
> order_by:
> - id
> "
>
> $form->load_config( $config );
>
> Then - when writing about some bug I could just send one self
> containing test case - and you could just run it and see the results.
There's 2 ways already of doing something similar:
use HTML::FormFu;
use YAML::Syck qw( Load );
my $form = HTML::FormFu->new;
$form->populate( Load( do { local $/; <DATA> } ) );
print $form;
__DATA__
---
elements:
- name: foo
- name: bar
... or ...
use HTML::FormFu;
use YAML::Syck qw( Load );
my $form = HTML::FormFu->new;
$form->populate( Load( <<END ) );
---
elements:
- name: foo
- name: bar
END
print $form;
Because load_config_file() uses Config::Any in the background, so as
to allow freedom of choice of config format, I wouldn't really want to
provide a yaml-specific method, if it's only real benefit is in test
files.
Carl
More information about the HTML-FormFu
mailing list