From f30c5d729b8a18eb75aea10e7dd98a96652835c2 Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Wed, 29 Mar 2023 12:26:18 +0200 Subject: [PATCH] Bug 11844: Add tests for marcfield_mode --- .../Koha/Object/Mixin/AdditionalFields.t | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100755 t/db_dependent/Koha/Object/Mixin/AdditionalFields.t diff --git a/t/db_dependent/Koha/Object/Mixin/AdditionalFields.t b/t/db_dependent/Koha/Object/Mixin/AdditionalFields.t new file mode 100755 index 0000000000..c397701f8a --- /dev/null +++ b/t/db_dependent/Koha/Object/Mixin/AdditionalFields.t @@ -0,0 +1,91 @@ +#!/usr/bin/perl + +use Modern::Perl; +use Test::More tests => 2; +use t::lib::TestBuilder; +use String::Random qw(random_string); +use Koha::Database; +use Koha::Subscription; +use Koha::AdditionalField; +use C4::Context; + +my $builder = t::lib::TestBuilder->new; +my $schema = Koha::Database->schema; + +subtest 'set_additional_fields with marcfield_mode = "get"' => sub { + plan tests => 1; + + $schema->txn_begin; + + my $biblio = $builder->build_sample_biblio(); + my $record = $biblio->record; + $record->append_fields( + MARC::Field->new('999', '', '', 'Z' => 'some value'), + ); + $biblio->metadata->metadata($record->as_xml_record(C4::Context->preference('marcflavour'))); + $biblio->metadata->store()->discard_changes(); + my $subscription = Koha::Subscription->new( + { + biblionumber => $biblio->biblionumber, + } + ); + $subscription->store()->discard_changes(); + + my $field = Koha::AdditionalField->new( + { + tablename => 'subscription', + name => random_string('c' x 100), + marcfield => '999$Z', + marcfield_mode => 'get', + } + ); + $field->store()->discard_changes(); + $subscription->set_additional_fields( + [ + { id => $field->id }, + ] + ); + + my $values = $subscription->additional_field_values()->as_list(); + + is($values->[0]->value, 'some value', 'value was copied from the biblio record to the field'); + + $schema->txn_rollback; +}; + +subtest 'set_additional_fields with marcfield_mode = "set"' => sub { + plan tests => 1; + + $schema->txn_begin; + + my $biblio = $builder->build_sample_biblio(); + my $subscription = Koha::Subscription->new( + { + biblionumber => $biblio->biblionumber, + } + ); + $subscription->store()->discard_changes(); + + my $field = Koha::AdditionalField->new( + { + tablename => 'subscription', + name => random_string('c' x 100), + marcfield => '999$Z', + marcfield_mode => 'set', + } + ); + $field->store()->discard_changes(); + $subscription->set_additional_fields( + [ + { + id => $field->id, + value => 'some value', + }, + ] + ); + + my $record = $biblio->record; + is($record->subfield('999', 'Z'), 'some value', 'value was copied from the field to the biblio record'); + + $schema->txn_rollback; +}; -- 2.30.2