From 6cf157f9930fc1deb47da2d5c3b7f3abc3e7e3c4 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 5 Jan 2016 15:08:23 +0000 Subject: [PATCH] Bug 15473: Make Koha::Objects->find accepts 0 and '' as a key This bug has been found after bug 15381 was pushed: If you go on authorities/authorities.pl, you expect a form to create a authorities with a "Default" authority type. Now, it explodes: Can't call method "authtypetext" on an undefined value at /home/koha/src/authorities/authorities.pl line 665. Koha::Objects->find does not want to search if the key does not exist (undef, '', 0). But actually it should only be a coward if it is not defined. Moreover this is the default behavior of the DBIx::Class find method. Test plan: prove t/db_dependent/Koha/Objects.t should return green and GET /cgi-bin/koha/authorities/authorities.pl should not make everything explode. Signed-off-by: Bernardo Gonzalez Kriegel Find this after signing 15470 :) Test pass, new auth (Default) created, no errors. Signed-off-by: Kyle M Hall Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com --- Koha/Objects.pm | 2 +- t/db_dependent/Koha/Objects.t | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 t/db_dependent/Koha/Objects.t diff --git a/Koha/Objects.pm b/Koha/Objects.pm index 27406cf2d9..8312949fcf 100644 --- a/Koha/Objects.pm +++ b/Koha/Objects.pm @@ -80,7 +80,7 @@ my $object = Koha::Objects->find( { keypart1 => $keypart1, keypart2 => $keypart2 sub find { my ( $self, $id ) = @_; - return unless $id; + return unless defined($id); my $result = $self->_resultset()->find($id); diff --git a/t/db_dependent/Koha/Objects.t b/t/db_dependent/Koha/Objects.t new file mode 100644 index 0000000000..830db76863 --- /dev/null +++ b/t/db_dependent/Koha/Objects.t @@ -0,0 +1,35 @@ +#!/usr/bin/perl + +# Copyright 2015 Koha Development team +# +# This file is part of Koha +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use Test::More tests => 1; + +use Koha::Authority::Types; +use Koha::Database; + +use t::lib::TestBuilder; + +my $schema = Koha::Database->new->schema; +$schema->storage->txn_begin; + +is( ref(Koha::Authority::Types->find('')), 'Koha::Authority::Type', 'Koha::Objects->find should work if the primary key is an empty string' ); + +$schema->storage->txn_rollback; +1; -- 2.39.5