Bug 28478: Add get_opac_suppression extractor

This patch adds an extractor method for the historically hardcoded field
942$n. This way we have a single place in which we code the extraction
and sanitization of its value.

To test:
1. Apply this patch
2. Run:
   $ ktd --shell
  k$ prove t/db_dependent/Koha/Biblio/Metadata/Extractor/MARC.t
=> SUCCESS: Tests pass! All use cases are covered!
3. Sign off :-D

Signed-off-by: Magnus Enger <magnus@libriotech.no>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
This commit is contained in:
Tomas Cohen Arazi 2024-12-18 11:10:34 -03:00 committed by Paul Derscheid
parent 538005a28c
commit b503cfe2be
No known key found for this signature in database
GPG Key ID: C25F9FD44CED595B
2 changed files with 41 additions and 1 deletions

View File

@ -100,6 +100,23 @@ sub get_control_number {
return $control_number;
}
=head2 get_opac_suppression
my $opac_suppressed = $extractor->get_opac_suppression();
Returns whether the record is flagged as suppressed in the OPAC.
FIXME: Revisit after 38330 discussion
=cut
sub get_opac_suppression {
my ($self) = @_;
my $record = $self->metadata;
return $record->subfield( '942', 'n' ) ? 1 : 0;
}
=head3 _normalize_string
my $normalized_string = $self->_normalize_string($string);

View File

@ -19,7 +19,7 @@
use Modern::Perl;
use Test::More tests => 1;
use Test::More tests => 2;
use Test::Exception;
use t::lib::TestBuilder;
@ -54,3 +54,26 @@ subtest 'get_control_number() tests' => sub {
is( $extractor->get_control_number, $identifier, 'Returns the right value' );
}
};
subtest 'get_opac_suppression() tests' => sub {
plan tests => 8;
foreach my $marcflavour (qw( MARC21 UNIMARC )) {
t::lib::Mocks::mock_preference( 'marcflavour', $marcflavour );
my $record = MARC::Record->new();
my $extractor = Koha::Biblio::Metadata::Extractor->new( { metadata => $record } );
is( $extractor->get_opac_suppression(), 0, 'If 942$n absent, then not suppressed' );
$record->append_fields( MARC::Field->new( '942', q{}, q{}, n => '' ) );
is( $extractor->get_opac_suppression(), 0, 'If 942$n has empty string, then not suppressed' );
$record->field('942')->replace_with( MARC::Field->new( '942', q{}, q{}, n => 'potato' ) );
is( $extractor->get_opac_suppression(), 1, 'If 942$n has something different than false, then suppressed' );
$record->field('942')->replace_with( MARC::Field->new( '942', q{}, q{}, n => '1' ) );
is( $extractor->get_opac_suppression(), 1, 'If 942$n is 1, then suppressed' );
}
};