From 8ccf96e8ae83a835800aa0ad8d6cbd936b119ae8 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->can_be_edited prove t/db_dependent/Koha/Biblio/Metadata.t Signed-off-by: Tomas Cohen Arazi Signed-off-by: Matt Blenkinsop --- Koha/Biblio/Metadata.pm | 16 ++++++++++++++++ t/db_dependent/Koha/Biblio/Metadata.t | 27 ++++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/Koha/Biblio/Metadata.pm b/Koha/Biblio/Metadata.pm index d5bfea5cd0..c78feac5c8 100644 --- a/Koha/Biblio/Metadata.pm +++ b/Koha/Biblio/Metadata.pm @@ -170,6 +170,22 @@ sub record_strip_nonxml { return $self->record( { %$params, record => $record } ); } +=head3 can_be_edited + + if ( $metadata->can_be_edited ) { ... } + +Returns a boolean denoting whether the metadata record can be edited. + +=cut + +sub can_be_edited { + 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 5318ebc23f..7efdf58035 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 'can_be_edited() 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->can_be_edited, '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->can_be_edited, 'Record source allows, can be edited' ); + + $source->can_be_edited(0)->store(); + $metadata->discard_changes; + + ok( !$metadata->can_be_edited, 'Record source does not allow, cannot be edited' ); + + $schema->storage->txn_rollback; +}; -- 2.37.1 (Apple Git-137.1)