Amon2-Plugin-Web-FormValidator-Simple
view release on metacpan or search on metacpan
t/01_validate.t view on Meta::CPAN
use utf8;
use strict;
use warnings;
use Test::More;
use Test::Requires 'Test::WWW::Mechanize::PSGI';
use Encode;
use Plack::Middleware::Lint;
use Text::Xslate;
my $conf = +{ # app config {{{
validator => +{
messages => +{
message_test => +{
pass => +{
NOT_BLANK => 'ãã¹ã¯ã¼ããæå®ãã¦ãã ããã',
ASCII => 'ãã¹ã¯ã¼ãã«ä¸æ£ãªæååãããã¾ãã',
LENGTH => 'ãã¹ã¯ã¼ãã®é·ã㯠16 æå以å
ã«ãã¦ãã ããã',
},
mail1 => +{
NOT_BLANK => 'ã¡ã¼ã«ã¢ãã¬ã¹ãæå®ãã¦ãã ããã',
ASCII => 'ã¡ã¼ã«ã¢ãã¬ã¹ã«ä¸æ£ãªæååãããã¾ãã',
},
mail2 => +{
NOT_BLANK => 'ã¡ã¼ã«ã¢ãã¬ã¹ãæå®ãã¦ãã ããã',
ASCII => 'ã¡ã¼ã«ã¢ãã¬ã¹ã«ä¸æ£ãªæååãããã¾ãã',
},
mails => +{
DUPLICATION => 'ã¡ã¼ã«ã¢ãã¬ã¹ãä¸è´ãã¾ããã',
},
},
},
message_format => 'error: %s',
message_decode_from => 'UTF-8',
},
};
#}}}
# test app setting
{ #{{{
package MyApp;
use parent qw!Amon2!;
sub load_config { $conf }
package MyApp::Web;
use parent -norequire, qw!MyApp!;
use parent qw!Amon2::Web!;
__PACKAGE__->load_plugins('Web::FormValidator::Simple');
#{{{
my $xslate = Text::Xslate->new(
syntax => 'TTerse',
function => +{c => sub {__PACKAGE__->context}},
path => +{
index => <<TT,
<!doctype html>
this is index.
TT
error => <<TT,
<!doctype html>
t/01_validate.t view on Meta::CPAN
SKIP: { # complex validation 2 - needs Date::Calc {{{
eval { require Date::Calc; };
skip 'Date::Calc not installed', 2 if $@;
my $str = query_string(
year => 2012,
month => 9,
day => -10,
);
$m->get_ok("/complex_validation2?$str");
is n($m->content) => n(<<HTML);
<!doctype html>
<ul>
<li>invalid: day - UINT
<li>invalid: date - DATE
</ul>
HTML
} #}}}
{ # messages {{{
my $str = query_string(
mail1 => '',
mail2 => 'ããããã@ã©ãã.com',
pass => 'ãããããããããããããããããããã',
action => 'message_test',
);
$m->get_ok("/complex_validation1?$str");
is n($m->content) => n(<<HTML);
<!doctype html>
<ul>
<li>invalid: pass - ASCII
<li>invalid: pass - LENGTH
<li>invalid: mail1 - NOT_BLANK
<li>invalid: mail2 - ASCII
<li>invalid: mails - DUPLICATION
</ul><ul>
<li>error: ãã¹ã¯ã¼ãã«ä¸æ£ãªæååãããã¾ãã
<li>error: ãã¹ã¯ã¼ãã®é·ã㯠16 æå以å
ã«ãã¦ãã ããã
<li>error: ã¡ã¼ã«ã¢ãã¬ã¹ãæå®ãã¦ãã ããã
<li>error: ã¡ã¼ã«ã¢ãã¬ã¹ã«ä¸æ£ãªæååãããã¾ãã
<li>error: ã¡ã¼ã«ã¢ãã¬ã¹ãä¸è´ãã¾ããã
</ul>
HTML
} #}}}
done_testing;
# helper functions {{{
sub n {
local $_ = shift;
s/\n$//;
$_;
}
sub query_string {
my %param = ref $_[0] ? %{$_[0]} : @_;
my $str = '';
while (my ($k, $v) = each %param) {
$v = encode(utf8 => $v);
$v =~ s/([^a-zA-Z0-9_.!~*'()-])/'%' . unpack('H2', $1)/eg;
$str .= "&$k=$v";
}
$str =~ s/^&//;
return $str;
}
#}}}
( run in 0.795 second using v1.01-cache-2.11-cpan-39bf76dae61 )