fu/t/query.t
Yorhel 06e2f950fe Add fu->redirect, change $st->row behavior on 0 results, minor fixes
And with this, I have a working rewrite of the manned.org backend into
FU. \o/

The $st->row methods are very useful even for queries that may not
return anything, so their old behavior was unhelpful. Interestingly
enough, the error-on-multiple-rows did catch an actual bug in
Manned.org, so I'm keeping that behavior.
2025-02-24 15:55:27 +01:00

34 lines
897 B
Perl

use v5.36;
use Test::More;
use FU::Util qw/query_decode query_encode/;
use experimental 'builtin';
is_deeply
query_decode('a&a&%c3%be=%26%3d%c3%be&a=3'),
{ a => [ builtin::true, builtin::true, 3 ], "\xfe" => "&=\xfe" };
ok !eval { query_decode('%10'); 1 };
like $@, qr/Invalid control character/;
is query_encode
{ a => builtin::true, b => undef, c => builtin::false, d => 'string', e => "&=\xfe" },
'a&d=string&e=%26%3d%c3%be';
is query_encode
{ "\xfe" => [ 1, undef, 3, builtin::false, builtin::true ] },
"%c3%be=1&%c3%be=3&%c3%be";
is_deeply
query_decode('a=&a=&b=&c==x&d=x='),
{ a => ['', ''], b => '', c => '=x', d => 'x=' };
is query_encode { a => ['', ''], b => '', c => '=x', d => 'x=' }, 'a=&a=&b=&c=%3dx&d=x%3d';
sub FUTILTEST::TO_QUERY { '&'.($_[0][0] + 1) }
is query_encode
{ -ab => bless [2], 'FUTILTEST' },
'-ab=%263';
done_testing;