Bug 11518: Add new method to K::S::R::Item that will always return the correct itemtype
There are many disparate areas of Koha that deal with item level itemtypes vs record level itemtypes. We can take advantage of DBIx::Class to make smarter objects that automatically return the correct value depending on the system preference. Test Plan: 1) Apply this patch 2) Run t/db_dependent/Items.t Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
This commit is contained in:
parent
8f287eebc5
commit
cef35259ee
3 changed files with 59 additions and 1 deletions
|
@ -331,6 +331,10 @@ __PACKAGE__->many_to_many("sets", "oai_sets_biblios", "set");
|
||||||
# Created by DBIx::Class::Schema::Loader v0.07025 @ 2013-10-14 20:56:21
|
# Created by DBIx::Class::Schema::Loader v0.07025 @ 2013-10-14 20:56:21
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:0//8OGf7OteNnwT03g4QsA
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:0//8OGf7OteNnwT03g4QsA
|
||||||
|
|
||||||
|
__PACKAGE__->belongs_to(
|
||||||
|
"biblioitem",
|
||||||
|
"Koha::Schema::Result::Biblioitem",
|
||||||
|
{ "foreign.biblionumber" => "self.biblionumber" }
|
||||||
|
);
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -618,4 +618,21 @@ __PACKAGE__->belongs_to(
|
||||||
{ "foreign.biblionumber" => "self.biblionumber" }
|
{ "foreign.biblionumber" => "self.biblionumber" }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
__PACKAGE__->belongs_to(
|
||||||
|
"biblioitem",
|
||||||
|
"Koha::Schema::Result::Biblioitem",
|
||||||
|
{ biblioitemnumber => "biblioitemnumber" },
|
||||||
|
);
|
||||||
|
|
||||||
|
use C4::Context;
|
||||||
|
sub itemtype {
|
||||||
|
my ( $self ) = @_;
|
||||||
|
|
||||||
|
if ( C4::Context->preference('item-level_itypes') ) {
|
||||||
|
return $self->itype();
|
||||||
|
} else {
|
||||||
|
return $self->biblioitem()->itemtype();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -20,6 +20,7 @@ use Modern::Perl;
|
||||||
|
|
||||||
use MARC::Record;
|
use MARC::Record;
|
||||||
use C4::Biblio;
|
use C4::Biblio;
|
||||||
|
use Koha::Database;
|
||||||
|
|
||||||
use Test::More tests => 3;
|
use Test::More tests => 3;
|
||||||
|
|
||||||
|
@ -142,6 +143,42 @@ subtest 'GetHiddenItemnumbers tests' => sub {
|
||||||
$dbh->rollback;
|
$dbh->rollback;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
subtest q{Test Koha::Database->schema()->resultset('Item')->itemtype()} => sub {
|
||||||
|
|
||||||
|
plan tests => 2;
|
||||||
|
|
||||||
|
# Start transaction
|
||||||
|
$dbh->{AutoCommit} = 0;
|
||||||
|
$dbh->{RaiseError} = 1;
|
||||||
|
|
||||||
|
my $schema = Koha::Database->new()->schema();
|
||||||
|
|
||||||
|
my $biblio =
|
||||||
|
$schema->resultset('Biblio')->create(
|
||||||
|
{
|
||||||
|
title => "Test title",
|
||||||
|
biblioitems => [
|
||||||
|
{
|
||||||
|
itemtype => 'BIB_LEVEL',
|
||||||
|
items => [ { itype => "ITEM_LEVEL" } ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
my $biblioitem = $biblio->biblioitem();
|
||||||
|
my ( $item ) = $biblioitem->items();
|
||||||
|
|
||||||
|
C4::Context->set_preference( 'item-level_itypes', 0 );
|
||||||
|
ok( $item->itemtype() eq 'BIB_LEVEL', '$item->itemtype() returns biblioitem.itemtype when item-level_itypes is disabled' );
|
||||||
|
|
||||||
|
C4::Context->set_preference( 'item-level_itypes', 1 );
|
||||||
|
ok( $item->itemtype() eq 'ITEM_LEVEL', '$item->itemtype() returns items.itype when item-level_itypes is disabled' );
|
||||||
|
|
||||||
|
|
||||||
|
$dbh->rollback;
|
||||||
|
};
|
||||||
|
|
||||||
# Helper method to set up a Biblio.
|
# Helper method to set up a Biblio.
|
||||||
sub get_biblio {
|
sub get_biblio {
|
||||||
my $bib = MARC::Record->new();
|
my $bib = MARC::Record->new();
|
||||||
|
|
Loading…
Reference in a new issue