Bug 35919: Add Koha::Biblio::Metadata->source_allows_editing

This patch adds a convenient method that tells if the record is
editable, according to it's record source.

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

Signed-off-by: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com>

Bug 31791: Rename can_be_edited -> source_allows_editing

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Tomas Cohen Arazi 2024-01-25 12:29:37 -03:00 committed by Katrin Fischer
parent 389debc4cd
commit 793dd17e29
No known key found for this signature in database
GPG Key ID: 0EF6E2C03357A834
2 changed files with 43 additions and 1 deletions

View File

@ -170,6 +170,23 @@ sub record_strip_nonxml {
return $self->record( { %$params, record => $record } );
}
=head3 source_allows_editing
if ( $metadata->source_allows_editing ) { ... }
Returns a boolean denoting whether the metadata's record source allows
it to be edited.
=cut
sub source_allows_editing {
my ($self) = @_;
my $rs = $self->_result->record_source;
return 1 unless $rs;
return $rs->can_be_edited;
}
=head2 Internal methods
=head3 _embed_items

View File

@ -17,7 +17,7 @@
use Modern::Perl;
use Test::More tests => 4;
use Test::More tests => 5;
use Test::Exception;
use Test::Warn;
@ -266,3 +266,28 @@ subtest '_embed_items' => sub {
$schema->storage->txn_rollback;
};
subtest 'source_allows_editing() tests' => sub {
plan tests => 4;
$schema->storage->txn_begin;
my $biblio = $builder->build_sample_biblio;
my $metadata = $biblio->metadata;
is( $metadata->record_source_id, undef, 'No record source defined for metatada object' );
ok( $metadata->source_allows_editing, 'No record source, can be edited' );
my $source = $builder->build_object( { class => 'Koha::RecordSources', value => { can_be_edited => 1 } } );
$metadata->record_source_id( $source->id )->store();
ok( $metadata->source_allows_editing, 'Record source allows, can be edited' );
$source->can_be_edited(0)->store();
$metadata->discard_changes;
ok( !$metadata->source_allows_editing, 'Record source does not allow, cannot be edited' );
$schema->storage->txn_rollback;
};