@@ -, +, @@ - Apply the patch - Run: $ prove t/db_dependent/Items.t --- t/db_dependent/Items.t | 80 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) --- a/t/db_dependent/Items.t +++ a/t/db_dependent/Items.t @@ -26,7 +26,7 @@ use Koha::Library; use t::lib::Mocks; use t::lib::TestBuilder; -use Test::More tests => 9; +use Test::More tests => 10; use Test::Warn; @@ -424,6 +424,82 @@ subtest 'SearchItems test' => sub { $schema->storage->txn_rollback; }; +subtest 'ModItemFromMarc tests' => sub { + + plan tests => 3; + + my $dbh = C4::Context->dbh; + my $builder = t::lib::TestBuilder->new; + + $schema->storage->txn_begin; + + my $branchcode = $builder->build({ + source => 'Branch', + })->{ branchcode }; + + my $frameworkcode = $builder->build({ + source => 'BiblioFramework' + })->{ frameworkcode }; + + my $msfstructure = $builder->build({ + source => 'MarcSubfieldStructure', + value => { + frameworkcode => $frameworkcode, + tagfield => 952, + tagsubfield => 'k', + kohafield => 'materials' + } + }); + + my $materials_value = 'materials_value'; + my ($itemfield) = GetMarcFromKohaField('items.itemnumber', ''); + my ($biblionumber) = get_biblio(); + # Make sure the default framework has 952$3 => items.materials + $dbh->do(q{ DELETE FROM marc_subfield_structure + WHERE kohafield="items.materials" AND + frameworkcode=""}, undef, $itemfield); + $dbh->do(q{ UPDATE marc_subfield_structure + SET kohafield="items.materials" + WHERE tagfield=? AND + tagsubfield="3" AND + frameworkcode=""}, undef, $itemfield); + + # Make sure cache is clean (TODO: change after bug 13074) + $C4::Items::default_values_for_mod_from_marc; + + # Add an item with a fixed materials value + my $item_record = MARC::Record->new; + $item_record->append_fields( + MARC::Field->new( + $itemfield, '', '', + '3' => $materials_value + ) + ); + my ( undef, undef, $itemnumber ) = AddItemFromMarc( $item_record, $biblionumber ); + my $item = Koha::Items->find( $itemnumber ); + is( $item->materials, $materials_value, 'Materials is correctly mapped on the default framework' ); + + # Change the biblio's framework + ModBiblioframework( $biblionumber, $frameworkcode ); + ModItemFromMarc( $item_record, $biblionumber, $itemnumber ); + $item = Koha::Items->find( $itemnumber ); + is( $item->materials, undef, 'Subfield 3 is not mapped on the new framework' ); + + # Now have the right subfield + $item_record = MARC::Record->new; + $item_record->append_fields( + MARC::Field->new( + $itemfield, '', '', + 'k' => $materials_value + ) + ); + ModItemFromMarc( $item_record, $biblionumber, $itemnumber ); + $item = Koha::Items->find( $itemnumber ); + is( $item->materials, $materials_value, 'Subfield mapping is taken from the biblio\'s framework' ); + + $schema->storage->txn_rollback; +}; + subtest 'Koha::Item(s) tests' => sub { plan tests => 5; @@ -563,3 +639,5 @@ sub get_biblio { my ($bibnum, $bibitemnum) = AddBiblio($bib, ''); return ($bibnum, $bibitemnum); } + +1; --