Bug 10961: (followup) Make query fields explicit and add regression tests

add correct frameworkcode to _koha_marc_update_bib_ids parameters

add test, prove with : prove t/db_dependent/Biblio.t

TEST PLAN
---------
1) git checkout -b bug_10961 origin/master
2) git bz apply 10961
3) git checkout origin/master -- C4/Biblio.pm
4) prove t/db_dependent/Biblio.t
   -- was expecting failure, got failure.
5) git reset --hard origin/master
6) git bz apply 10961
7) prove t/db_dependent/Biblio.t
   -- success as expected.
8) Read over code.
   -- Noted it also grabs the framework code for the biblio, rather than uses default.
      And it also corrects an indentation issue.
      Test case looks like it attempts to cover the biblionumber!=biblioitemnumber case
      by adding 1.
9) run koha qa test tools.

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@unc.edu.ar>
This commit is contained in:
Stéphane Delaune 2015-07-23 16:28:57 +02:00 committed by Tomas Cohen Arazi
parent 298c4c76a5
commit 62dc6b0ca1
2 changed files with 20 additions and 5 deletions

View file

@ -1268,10 +1268,12 @@ sub GetMarcBiblio {
}
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare("SELECT * FROM biblioitems WHERE biblionumber=? ");
my $sth = $dbh->prepare("SELECT biblioitemnumber, marcxml FROM biblioitems WHERE biblionumber=? ");
$sth->execute($biblionumber);
my $row = $sth->fetchrow_hashref;
my $biblioitemnumber = $row->{'biblioitemnumber'};
my $marcxml = StripNonXmlChars( $row->{'marcxml'} );
my $frameworkcode = GetFrameworkCode($biblionumber);
MARC::File::XML->default_record_format( C4::Context->preference('marcflavour') );
my $record = MARC::Record->new();
@ -1280,7 +1282,7 @@ sub GetMarcBiblio {
if ($@) { warn " problem with :$biblionumber : $@ \n$marcxml"; }
return unless $record;
C4::Biblio::_koha_marc_update_bib_ids($record, '', $biblionumber, $row->{biblioitemnumber});
C4::Biblio::_koha_marc_update_bib_ids($record, $frameworkcode, $biblionumber, $biblioitemnumber);
C4::Biblio::EmbedItemsInMarcBiblio($record, $biblionumber) if ($embeditems);
return $record;

View file

@ -194,6 +194,19 @@ sub run_tests {
is( GetMarcPrice( $record_for_isbn, $marcflavour ), 100,
"GetMarcPrice returns the correct value");
my $newincbiblioitemnumber=$biblioitemnumber+1;
$dbh->do("UPDATE biblioitems SET biblioitemnumber = ? WHERE biblionumber = ?;", undef, $newincbiblioitemnumber, $biblionumber );
my $updatedrecord = GetMarcBiblio($biblionumber, 0);
my $frameworkcode = GetFrameworkCode($biblionumber);
my ( $biblioitem_tag, $biblioitem_subfield ) = GetMarcFromKohaField( "biblioitems.biblioitemnumber", $frameworkcode );
die qq{No biblioitemnumber tag for framework "$frameworkcode"} unless $biblioitem_tag;
my $biblioitemnumbertotest;
if ( $biblioitem_tag < 10 ) {
$biblioitemnumbertotest = $updatedrecord->field($biblioitem_tag)->data();
} else {
$biblioitemnumbertotest = $updatedrecord->field($biblioitem_tag)->subfield($biblioitem_subfield);
}
is ($newincbiblioitemnumber, $biblioitemnumbertotest);
}
sub mock_marcfromkohafield {
@ -260,19 +273,19 @@ sub create_issn_field {
}
subtest 'MARC21' => sub {
plan tests => 27;
plan tests => 28;
run_tests('MARC21');
$dbh->rollback;
};
subtest 'UNIMARC' => sub {
plan tests => 27;
plan tests => 28;
run_tests('UNIMARC');
$dbh->rollback;
};
subtest 'NORMARC' => sub {
plan tests => 27;
plan tests => 28;
run_tests('NORMARC');
$dbh->rollback;
};