From e1961e3bfe5e8d264087c185fa0345ad88235fa6 Mon Sep 17 00:00:00 2001 From: Matthias Meusburger Date: Tue, 10 Sep 2024 15:34:07 +0000 Subject: [PATCH] Bug 35659: (QA follow-up): Add init function tests by using Koha's OAI server --- Koha/OAI/Client/Harvester.pm | 13 +++++++++---- t/db_dependent/Koha/OAIHarvester.t | 18 +++++++++++++++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/Koha/OAI/Client/Harvester.pm b/Koha/OAI/Client/Harvester.pm index 779632824d8..9e60214be16 100644 --- a/Koha/OAI/Client/Harvester.pm +++ b/Koha/OAI/Client/Harvester.pm @@ -87,10 +87,10 @@ Starts harvesting sub init { my ( $self, $args ) = @_; - $self->printlog("Starting OAI Harvest from repository"); my $server = $self->{server}; my $days = $self->{days}; + my $init_results; my $h = HTTP::OAI::Harvester->new( repository => HTTP::OAI::Identify->new( @@ -117,6 +117,7 @@ sub init { $lmdflog .= $_->metadataPrefix . " "; } $self->printlog("Available metadata formats for this repository: $lmdflog"); + $init_results->{metadata_formats} = $lmdflog; } catch { $self->printlog("ListMetadataFormats failed"); }; @@ -148,7 +149,8 @@ sub init { ); if ( $response->is_error ) { $self->printlog( "Error requesting ListRecords: " . $response->code . " " . $response->message ); - exit; + $init_results->{is_error} = $response->message; + return $init_results; } $self->printlog( "Request URL: " . $response->requestURL ); @@ -164,6 +166,7 @@ sub init { my $status = $self->processRecord($oai_record); $stats{$status}++; } + $init_results->{total} = $stats{'total'}; my $results = ''; foreach my $status (@statuses) { @@ -193,20 +196,22 @@ sub init { ) ) or $self->printlog("OAI_HARVEST_REPORT letter not found"); - my $success = C4::Letters::EnqueueLetter( + my $message_id = C4::Letters::EnqueueLetter( { letter => $letter, to_address => C4::Context->preference("OAI-PMH:HarvestEmailReport"), message_transport_type => 'email' } ); - if ($success) { + if ($message_id) { $self->printlog("Email report enqueued"); + $init_results->{letter_message_id} = $message_id; } else { $self->printlog("Unable to enqueue report email"); } } $self->printlog("Ending OAI Harvest from repository"); + return $init_results; } =head2 processRecord diff --git a/t/db_dependent/Koha/OAIHarvester.t b/t/db_dependent/Koha/OAIHarvester.t index c8ecd701b4b..b90fe28396f 100755 --- a/t/db_dependent/Koha/OAIHarvester.t +++ b/t/db_dependent/Koha/OAIHarvester.t @@ -18,11 +18,13 @@ # along with Koha; if not, see . use Modern::Perl; -use Test::More tests => 24; +use Test::More tests => 28; use Test::Exception; use File::Temp qw/tempfile/; use t::lib::TestBuilder; +use t::lib::Mocks; + use HTTP::OAI; use HTTP::OAI::Metadata::OAI_DC; use HTTP::OAI::Record; @@ -39,8 +41,8 @@ $schema->storage->txn_begin; my $new_oai_biblio = Koha::OAIServer->new( { - endpoint => 'my_host1.org', - oai_set => 'set1', + endpoint => C4::Context->preference('OPACBaseURL') . '/cgi-bin/koha/oai.pl', + oai_set => '', servername => 'my_test_1', dataformat => 'oai_dc', recordtype => 'biblio', @@ -48,8 +50,18 @@ my $new_oai_biblio = Koha::OAIServer->new( } )->store; +C4::Context->set_preference( 'OAI-PMH', 1 ); +t::lib::Mocks::mock_preference( 'OAI-PMH:HarvestEmailReport', C4::Context->preference('KohaAdminEmailAddress') ); + my $harvester = Koha::OAI::Client::Harvester->new( { server => $new_oai_biblio, verbose => 1, days => 1, force => 1 } ); +my $init_results = $harvester->init(); + +like( $init_results->{metadata_formats}, qr/oai_dc marc21 marcxml/, 'Got list of supported metadata formats' ); +is( $init_results->{is_error}, undef, 'ListRecords request worked' ); +cmp_ok( $init_results->{total}, '>', 0, 'Records have been processed' ); +isnt( $init_results->{letter_message_id}, undef, 'Report has been enqueued' ); + my $record = 'Pièces diverses ARCH/0320 [cote]FR-920509801 [RCR établissement]Central obrera boliviana [Fonds ou collection]1 carton1971/2000Archives et manuscrits'; -- 2.39.2