Marcel de Rooy
5a63523f59
The subroutines listed in the former patch are extensively tested in Biblio.t, TransformKohaToMarc.t and TransformMarcToKoha.t. These tests do no longer use new frameworks to add mappings. In Biblio.t and TransformMarcToKoha.t we also test passing an individual framework code (for an empty framework) to see if Default is still used. Note that this parameter will be removed later on. In Items.t the cache keys MarcStructure-0- and MarcStructure-1- are not touched, so they do not need to be cleared. The cache key default_value_for_mod_marc- should be used without framework now. Similar adjustments in Items/AutomaticItemModificationByAge.t and Reserves.t. Furthermore the subtest for _build_default_values_for_mod_marc in Items.t is adjusted since framework is no longer relevant. The biblio record with items is created in a new framework, but the mappings from Default are consulted. Test plan: Run all adjusted unit tests. Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
98 lines
4.3 KiB
Perl
98 lines
4.3 KiB
Perl
#!/usr/bin/perl
|
|
|
|
# Tests for C4::Biblio::TransformMarcToKoha, TransformMarcToKohaOneField
|
|
|
|
# Copyright 2017 Rijksmuseum
|
|
#
|
|
# 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 <http://www.gnu.org/licenses>.
|
|
|
|
use Modern::Perl;
|
|
use Test::More tests => 2;
|
|
use MARC::Record;
|
|
|
|
use t::lib::Mocks;
|
|
use t::lib::TestBuilder;
|
|
|
|
use Koha::Database;
|
|
use Koha::Caches;
|
|
use Koha::MarcSubfieldStructures;
|
|
use C4::Biblio;
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
$schema->storage->txn_begin;
|
|
|
|
# Create a few mappings
|
|
# Note: TransformMarcToKoha wants a table name (biblio, biblioitems or items)
|
|
Koha::MarcSubfieldStructures->search({ frameworkcode => '', tagfield => [ '300', '500' ] })->delete;
|
|
Koha::MarcSubfieldStructure->new({ frameworkcode => '', tagfield => '300', tagsubfield => 'a', kohafield => 'biblio.field1' })->store;
|
|
Koha::MarcSubfieldStructure->new({ frameworkcode => '', tagfield => '300', tagsubfield => 'b', kohafield => 'biblio.field2' })->store;
|
|
Koha::MarcSubfieldStructure->new({ frameworkcode => '', tagfield => '500', tagsubfield => 'a', kohafield => 'biblio.field3' })->store;
|
|
Koha::Caches->get_instance->clear_from_cache( "MarcSubfieldStructure-" );
|
|
|
|
subtest 'Test a few mappings' => sub {
|
|
plan tests => 7;
|
|
|
|
my $marc = MARC::Record->new;
|
|
$marc->append_fields(
|
|
MARC::Field->new( '300', '', '', a => 'a1', b => 'b1' ),
|
|
MARC::Field->new( '300', '', '', a => 'a2', b => 'b2' ),
|
|
MARC::Field->new( '500', '', '', a => 'note1', a => 'note2' ),
|
|
);
|
|
my $result = C4::Biblio::TransformMarcToKoha( $marc );
|
|
# Note: TransformMarcToKoha stripped the table prefix biblio.
|
|
is( keys %{$result}, 3, 'Found all three mappings' );
|
|
is( $result->{field1}, 'a1 | a2', 'Check field1 results' );
|
|
is( $result->{field2}, 'b1 | b2', 'Check field2 results' );
|
|
is( $result->{field3}, 'note1 | note2', 'Check field3 results' );
|
|
|
|
is( C4::Biblio::TransformMarcToKohaOneField( 'biblio.field1', $marc ),
|
|
$result->{field1}, 'TransformMarcToKohaOneField returns biblio.field1');
|
|
is( C4::Biblio::TransformMarcToKohaOneField( 'field4', $marc ),
|
|
undef, 'TransformMarcToKohaOneField returns undef' );
|
|
|
|
# Bug 19096 Default is authoritative now
|
|
# Test passing another framework
|
|
# CAUTION: This parameter of TransformMarcToKoha will be removed later
|
|
my $new_fw = t::lib::TestBuilder->new->build({source => 'BiblioFramework'});
|
|
$result = C4::Biblio::TransformMarcToKoha($marc, $new_fw->{frameworkcode});
|
|
is( keys %{$result}, 3, 'Still found all three mappings' );
|
|
};
|
|
|
|
subtest 'Multiple mappings for one kohafield' => sub {
|
|
plan tests => 4;
|
|
|
|
# Add another mapping to field1
|
|
Koha::MarcSubfieldStructures->search({ frameworkcode => '', tagfield => '510' })->delete;
|
|
Koha::MarcSubfieldStructure->new({ frameworkcode => '', tagfield => '510', tagsubfield => 'a', kohafield => 'biblio.field1' })->store;
|
|
Koha::Caches->get_instance->clear_from_cache( "MarcSubfieldStructure-" );
|
|
|
|
my $marc = MARC::Record->new;
|
|
$marc->append_fields( MARC::Field->new( '300', '', '', a => '3a' ) );
|
|
my $result = C4::Biblio::TransformMarcToKoha( $marc );
|
|
is_deeply( $result, { field1 => '3a' }, 'Simple start' );
|
|
$marc->append_fields( MARC::Field->new( '510', '', '', a => '' ) );
|
|
$result = C4::Biblio::TransformMarcToKoha( $marc );
|
|
is_deeply( $result, { field1 => '3a' }, 'An empty 510a makes no difference' );
|
|
$marc->append_fields( MARC::Field->new( '510', '', '', a => '51' ) );
|
|
$result = C4::Biblio::TransformMarcToKoha( $marc );
|
|
is_deeply( $result, { field1 => '3a | 51' }, 'Got 300a and 510a' );
|
|
|
|
is( C4::Biblio::TransformMarcToKohaOneField( 'biblio.field1', $marc ),
|
|
'3a | 51', 'TransformMarcToKohaOneField returns biblio.field1' );
|
|
};
|
|
|
|
# Cleanup
|
|
Koha::Caches->get_instance->clear_from_cache( "MarcSubfieldStructure-" );
|
|
$schema->storage->txn_rollback;
|