From a2babdad34c2fa9023b45b7c170c4c41f41e2837 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Thu, 25 Jan 2024 12:29:37 -0300 Subject: [PATCH] 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 Bug 31791: Rename can_be_edited -> source_allows_editing --- Koha/Biblio/Metadata.pm | 17 +++++++++++++++++ t/db_dependent/Koha/Biblio/Metadata.t | 27 ++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/Koha/Biblio/Metadata.pm b/Koha/Biblio/Metadata.pm index d5bfea5cd00..926beda2c56 100644 --- a/Koha/Biblio/Metadata.pm +++ b/Koha/Biblio/Metadata.pm @@ -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 diff --git a/t/db_dependent/Koha/Biblio/Metadata.t b/t/db_dependent/Koha/Biblio/Metadata.t index 5318ebc23f8..7a459938615 100755 --- a/t/db_dependent/Koha/Biblio/Metadata.t +++ b/t/db_dependent/Koha/Biblio/Metadata.t @@ -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; +}; -- 2.44.0