use Test::More tests => 27;
package MyVal;
use Validation::Class;
mixin ID => {
required => 1,
min_length => 1,
max_length => 11
};
mixin TEXT => {
required => 1,
min_length => 1,
max_length => 255
};
field id => {
mixin => 'ID',
label => 'Object ID',
error => 'Object ID error'
};
field name => {
mixin => 'TEXT',
label => 'Object Name',
error => 'Object Name error'
};
field email => {
mixin => 'TEXT',
label => 'Object Email',
error => 'Object Email error',
max_length => 500
};
field email_confirm => {
mixin_field => 'email',
label => 'Object Email Confirm',
error => 'Object Email confirmation error',
min_length => 5
};
package main;
use strict;
use warnings;
my $p = {name => '', email => 'awncorp@cpan.org'};
my $v = MyVal->new(params => $p);
ok $v, 'initialization successful';
ok !$v->clear_queue, 'queue cleared, no errors';
ok $v->queue(qw/name email/), 'queued name and email';
ok !$v->validate, 'validation failed';
ok $v->error_count == 1, 'expected number of errors';
ok !$v->validate('id'), 'validation failed';
ok $v->error_count == 2, 'expected number of errors';
ok $v->param(qw/name AWNCORP/) eq 'AWNCORP', 'set parameter ok';
ok $v->param(qw/id 100/) == 100, 'set parameter ok';
ok $v->validate, 'validation succesful';
ok !$v->error_count, 'no errors';
ok $v->validate('id'), 'validation succesful';
ok !$v->error_count, 'no errors';
# ok $v->reset, 'reset ok'; - DEPRECATED
ok $v->proto->clear_queue, 'queue reset ok';
ok $v->proto->reset_fields(), 'fields reset ok';
ok !$v->validate(keys %{$v->fields}), 'validate all (not queued) failed';
ok $v->error_count == 1, 'error - email_confirm not set';
# advanced queue usage
$v->param($_ => '') for qw(id name);
ok $v->queue('+id'), 'queued id w/requirement';
ok $v->queue('+name'), 'queued name w/requirement';
ok $v->queue('email'), 'queued email';
# ok 3 == @{$v->queued}, '3 fields queued'; - DEPRECATED
ok 3 == @{$v->proto->queued}, '3 fields queued';
ok !$v->validate, 'error: both fields required, no input';
ok 2 == $v->error_count, '2 errors encoutered';
$v->param(id => 123);
$v->param(name => 456);
ok 3 == $v->clear_queue(my ($id, $name)), 'rid the queue of 3 fields, 2 set';
ok $id == 123, 'local variable (id) set correctly';
ok $name == 456, 'local variable (name) set correctly';
# ok ! @{$v->queued}, 'no fields queued' - DEPRECATED;
ok !@{$v->proto->queued}, 'no fields queued';