CatalystX::CRUD::Test::Form - mock form class for testing CatalystX::CRUD packages


CatalystX-CRUD documentation Contained in the CatalystX-CRUD distribution.

Index


Code Index:

NAME

Top

CatalystX::CRUD::Test::Form - mock form class for testing CatalystX::CRUD packages

SYNOPSIS

Top

 package MyApp::Form::Foo;
 use strict;
 use base qw( CatalystX::CRUD::Test::Form );

 sub foo_from_form {
     my $self = shift;
     return $self->SUPER::object_from_form(@_);
 }

 sub init_with_foo {
     my $self = shift;
     return $self->SUPER::init_with_object(@_);
 }

 1;

 


DESCRIPTION

Top

CatalystX::CRUD::Test::Form is a mock form class for testing CatalystX::CRUD packages. The API is similar to Rose::HTML::Form, but implements very naive methods only.

METHODS

Top

new( args )

Returns new object instance. args must be a hashref and must contain at least a key/value pair for fields.

fields( [ arrayref ] )

Get/set the arrayref of field names.

This must be set in new().

field_names

An alias for fields().

params( [ hashref ] )

Get/set the hashref of key/value pairs for the form object. The keys should be the names of form fields and should match the value of fields().

param( key => val )

Sets the key/value pair for a field. key should be the name of a field, as indicated by params().

init_fields

Placeholder only. Does nothing.

clear

Resets params() to an empty hashref.

validate

Does nothing. Always returns true.

init_with_object( object )

You should override this method in your subclass. Basically sets all accessors in form equal to the equivalent value in object.

Returns the Form object.

object_from_form( object )

You should override this method in your subclass. Basically sets all accessors in object equal to the equivalent value in form.

dump

Wrapper around Data::Dump::dump. Returns the form object serialized.

AUTHOR

Top

Peter Karman, <perl at peknet.com>

BUGS

Top

Please report any bugs or feature requests to bug-catalystx-crud at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CatalystX-CRUD. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

Top

You can find documentation for this module with the perldoc command.

    perldoc CatalystX::CRUD

You can also look for information at:

* AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/CatalystX-CRUD

* CPAN Ratings

http://cpanratings.perl.org/d/CatalystX-CRUD

* RT: CPAN's request tracker

http://rt.cpan.org/NoAuth/Bugs.html?Dist=CatalystX-CRUD

* Search CPAN

http://search.cpan.org/dist/CatalystX-CRUD

ACKNOWLEDGEMENTS

Top

COPYRIGHT & LICENSE

Top


CatalystX-CRUD documentation Contained in the CatalystX-CRUD distribution.
package CatalystX::CRUD::Test::Form;
use strict;
use warnings;
use Carp;
use Data::Dump;
use base qw( Class::Accessor::Fast );

__PACKAGE__->mk_accessors(qw( params fields ));

our $VERSION = '0.51';

sub new {
    my $class = shift;
    my $self  = $class->SUPER::new(@_);
    croak "fields() required to be an ARRAY ref"
        unless $self->fields and ref( $self->fields ) eq 'ARRAY';
    $self->params( { map { $_ => undef } @{ $self->fields } } )
        unless $self->params;
    return $self;
}

*field_names = \&fields;

sub param {
    my $self = shift;
    my $key  = shift;
    croak "key required" if !defined $key;
    my $val = shift;
    $self->params->{$key} = $val;
}

sub init_fields {
    my $self = shift;

    # nothing to do
    #$self->dump;
}

sub clear {
    my $self = shift;
    $self->params( {} );
}

sub validate {
    my $self = shift;

    # nothing to do in this poor man's form.
    #$self->dump;

    1;
}

sub init_with_object {
    my ( $self, $object ) = @_;
    for my $f ( keys %{ $self->params } ) {
        if ( $object->can($f) ) {
            $self->params->{$f} = $object->$f;
        }
    }
    return $self;
}

sub object_from_form {
    my ( $self, $object ) = @_;
    for my $f ( keys %{ $self->params } ) {
        if ( $object->can($f) ) {
            $object->$f( $self->params->{$f} );
        }
    }
    return $object;
}

sub dump {
    my $self = shift;
    Data::Dump::dump($self);
}

1;

__END__