Bug 14346: t/Biblio.t fails because of new warning

Running

 $ prove t/Biblio.t

fails because of us now using DBIx to retrieve sysprefs. Then our mocked DBI is not "supported" by DBIx hence a warning that makes our test fail (there is one more warning now).

The cool thing about this, is that it actually helped spot a situation where GetMarcBiblio is doing wrong things because is not checking its parameters are undefined, so we have the chance to fix it.

This patch makes GetMarcBiblio return undef if no biblionumber is passed, and
also raises a conveniently carped warning. This change is tested in t/Biblio.t with new tests.

To test:
- In current master, run
  $ prove t/Biblio.t
=> FAIL: a test detects a wrong warning count and fails.
- Apply the patch and run
  $ prove t/Biblio.t
=> SUCCESS: Tests now pass, and there are 2 new ones.
- Sign off :-D

Regards

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Tomás Cohen Arazi 2015-06-05 14:52:36 -03:00 committed by Tomas Cohen Arazi
parent 5a02cf9b48
commit 46419b797b
2 changed files with 17 additions and 4 deletions

View file

@ -1261,6 +1261,12 @@ The MARC record contains biblio data, and items data if $embeditems is set to tr
sub GetMarcBiblio {
my $biblionumber = shift;
my $embeditems = shift || 0;
if (not defined $biblionumber) {
carp 'GetMarcBiblio called with undefined biblionumber';
return;
}
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare("SELECT marcxml FROM biblioitems WHERE biblionumber=? ");
$sth->execute($biblionumber);

View file

@ -17,7 +17,7 @@
use Modern::Perl;
use Test::More tests => 44;
use Test::More tests => 46;
use Test::MockModule;
use Test::Warn;
use DBD::Mock;
@ -167,9 +167,16 @@ warning_is { $ret = RemoveAllNsb() }
ok( !defined $ret, 'RemoveAllNsb returns undef if not passed rec');
warning_is { $ret = UpdateTotalIssues() }
{ carped => 'UpdateTotalIssues could not get biblio record'},
"UpdateTotalIssues returns carped warning if biblio record does not exist";
warning_is { $ret = GetMarcBiblio() }
{ carped => 'GetMarcBiblio called with undefined biblionumber'},
"GetMarcBiblio returns carped warning on undef biblionumber";
ok( !defined $ret, 'GetMarcBiblio returns undef if not passed a biblionumber');
warnings_like { $ret = UpdateTotalIssues() }
[ { carped => qr/GetMarcBiblio called with undefined biblionumber/ },
{ carped => qr/UpdateTotalIssues could not get biblio record/ } ],
"UpdateTotalIssues returns carped warnings if biblio record does not exist";
ok( !defined $ret, 'UpdateTotalIssues returns carped warning if biblio record does not exist');