Bug 20886: Do not cast undef to 0 (TO_JSON)
We should not cast undefined values to 0. Signed-off-by: Andrew Isherwood <andrew.isherwood@ptfs-europe.com> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> This was a bug I introduced. I think the fix is right, and if something gets broken for this, it means it was making the wrong assumptions on the data. Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This commit is contained in:
parent
d86ff0f5db
commit
2529a218ee
2 changed files with 8 additions and 2 deletions
|
@ -22,6 +22,7 @@ use Modern::Perl;
|
|||
|
||||
use Carp;
|
||||
use Mojo::JSON;
|
||||
use Scalar::Util qw( looks_like_number );
|
||||
use Try::Tiny;
|
||||
|
||||
use Koha::Database;
|
||||
|
@ -241,7 +242,9 @@ sub TO_JSON {
|
|||
? Mojo::JSON->true
|
||||
: Mojo::JSON->false;
|
||||
}
|
||||
elsif ( _numeric_column_type( $columns_info->{$col}->{data_type} ) ) {
|
||||
elsif ( _numeric_column_type( $columns_info->{$col}->{data_type} )
|
||||
and looks_like_number( $unblessed->{$col} )
|
||||
) {
|
||||
|
||||
# TODO: Remove once the solution for
|
||||
# https://rt.cpan.org/Ticket/Display.html?id=119904
|
||||
|
|
|
@ -161,7 +161,7 @@ subtest 'discard_changes' => sub {
|
|||
|
||||
subtest 'TO_JSON tests' => sub {
|
||||
|
||||
plan tests => 7;
|
||||
plan tests => 8;
|
||||
|
||||
$schema->storage->txn_begin;
|
||||
|
||||
|
@ -169,6 +169,7 @@ subtest 'TO_JSON tests' => sub {
|
|||
my $borrowernumber = $builder->build(
|
||||
{ source => 'Borrower',
|
||||
value => { lost => 1,
|
||||
sms_provider_id => undef,
|
||||
gonenoaddress => 0,
|
||||
updated_on => $dt,
|
||||
lastseen => $dt, } })->{borrowernumber};
|
||||
|
@ -185,6 +186,8 @@ subtest 'TO_JSON tests' => sub {
|
|||
ok( $gonenoaddress->isa('JSON::PP::Boolean'), 'Boolean attribute type is correct' );
|
||||
is( $gonenoaddress, 0, 'Boolean attribute value is correct (false)' );
|
||||
|
||||
is( $patron->TO_JSON->{sms_provider_id}, undef, 'Undef values should not be casted to 0' );
|
||||
|
||||
ok( !isvstring($patron->borrowernumber), 'Integer values are not coded as strings' );
|
||||
|
||||
my $rfc3999_regex = qr/
|
||||
|
|
Loading…
Reference in a new issue