Lines 17-23
Link Here
|
17 |
|
17 |
|
18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
19 |
|
19 |
|
20 |
use Test::More tests => 3; |
20 |
use Test::More tests => 4; |
21 |
|
21 |
|
22 |
use Koha::Database; |
22 |
use Koha::Database; |
23 |
use Koha::BackgroundJobs; |
23 |
use Koha::BackgroundJobs; |
Lines 40-45
my $sushi_response_errors = {
Link Here
|
40 |
'invalid_api_key' => '{"Code": 2020, "Severity": "Error", "Message": "API Key Invalid"}', |
40 |
'invalid_api_key' => '{"Code": 2020, "Severity": "Error", "Message": "API Key Invalid"}', |
41 |
}; |
41 |
}; |
42 |
|
42 |
|
|
|
43 |
my $sushi_response_exceptions = { |
44 |
'multiple_exceptions' => '{"Created":"2024-09-06T10:41:02Z","Created_By":"Test Services","Customer_ID":"Test_customer_id","Report_ID":"TR_J1","Release":"5","Report_Name":"Journal Requests (Excluding OA_Gold)","Institution_Name":"Test Institution","Report_Filters":[{"Name":"Begin_Date","Value":"2024-06-01"},{"Name":"End_Date","Value":"2024-08-31"}],"Exceptions":[{"Code":3050,"Severity":"Warning","Message":"Parameter Not Recognized in this Context","Data":"Parameter api_key is not recognized"},{"Code":3070,"Severity":"Error","Message":"Required ReportFilter Missing","Data":"Required parameter Platform is missing and should be one of:sd|sc|ev|em|ck"}]}', |
45 |
}; |
46 |
|
43 |
subtest 'enqueue() tests' => sub { |
47 |
subtest 'enqueue() tests' => sub { |
44 |
|
48 |
|
45 |
plan tests => 3; |
49 |
plan tests => 3; |
Lines 134-139
subtest 'invalid_api_key() tests' => sub {
Link Here
|
134 |
$schema->storage->txn_rollback; |
138 |
$schema->storage->txn_rollback; |
135 |
}; |
139 |
}; |
136 |
|
140 |
|
|
|
141 |
subtest 'multiple_exceptions() tests' => sub { |
142 |
|
143 |
plan tests => 6; |
144 |
|
145 |
$schema->storage->txn_begin; |
146 |
|
147 |
my $ua = Test::MockModule->new('LWP::UserAgent'); |
148 |
$ua->mock('simple_request', sub { |
149 |
return mock_sushi_response({'exception'=>'multiple_exceptions'}); |
150 |
}); |
151 |
|
152 |
my $usage_data_provider = $builder->build_object( |
153 |
{ class => 'Koha::ERM::EUsage::UsageDataProviders', value => { name => 'TestProvider' } } ); |
154 |
|
155 |
my $job_args = { |
156 |
ud_provider_id => $usage_data_provider->erm_usage_data_provider_id, |
157 |
report_type => 'TR_J1', |
158 |
begin_date => '2023-08-01', |
159 |
end_date => '2023-09-30', |
160 |
ud_provider_name => $usage_data_provider->name, |
161 |
}; |
162 |
|
163 |
my $job_id = Koha::BackgroundJob::ErmSushiHarvester->new->enqueue($job_args); |
164 |
my $job = Koha::BackgroundJobs->find($job_id)->_derived_class; |
165 |
$job->process( $job_args ); |
166 |
|
167 |
is( $job->{messages}[0]->{message}, decode_json($sushi_response_exceptions->{multiple_exceptions})->{Exceptions}[0]->{Message} . ' - ' . decode_json($sushi_response_exceptions->{multiple_exceptions})->{Exceptions}[0]->{Data},'SUSHI exceptions multiple_exceptions are stored on job messages correctly' ); |
168 |
is( $job->{messages}[0]->{type},'error','SUSHI error multiple_exceptions are stored on job messages correctly' ); |
169 |
is( $job->{messages}[0]->{code},decode_json($sushi_response_exceptions->{multiple_exceptions})->{Exceptions}[0]->{Code},'SUSHI error multiple_exceptions are stored on job messages correctly' ); |
170 |
|
171 |
is( $job->{messages}[1]->{message}, decode_json($sushi_response_exceptions->{multiple_exceptions})->{Exceptions}[1]->{Message} . ' - ' . decode_json($sushi_response_exceptions->{multiple_exceptions})->{Exceptions}[1]->{Data},'SUSHI exceptions multiple_exceptions are stored on job messages correctly' ); |
172 |
is( $job->{messages}[1]->{type},'error','SUSHI error multiple_exceptions are stored on job messages correctly' ); |
173 |
is( $job->{messages}[1]->{code},decode_json($sushi_response_exceptions->{multiple_exceptions})->{Exceptions}[1]->{Code},'SUSHI error multiple_exceptions are stored on job messages correctly' ); |
174 |
|
175 |
$schema->storage->txn_rollback; |
176 |
}; |
177 |
|
137 |
sub mock_sushi_response { |
178 |
sub mock_sushi_response { |
138 |
my ($args) = @_; |
179 |
my ($args) = @_; |
139 |
my $response = Test::MockObject->new(); |
180 |
my $response = Test::MockObject->new(); |
Lines 148-153
sub mock_sushi_response {
Link Here
|
148 |
return 0; |
189 |
return 0; |
149 |
}); |
190 |
}); |
150 |
$response->mock('decoded_content', sub { |
191 |
$response->mock('decoded_content', sub { |
151 |
return $sushi_response_errors->{$args->{error}}; |
192 |
return $args->{error} ? $sushi_response_errors->{$args->{error}} : $sushi_response_exceptions->{$args->{exception}}; |
152 |
}); |
193 |
}); |
153 |
} |
194 |
} |
154 |
- |
|
|