Lines 56-66
my $schema = Koha::Database->schema;
Link Here
|
56 |
$schema->storage->txn_begin; |
56 |
$schema->storage->txn_begin; |
57 |
my $dbh = C4::Context->dbh; |
57 |
my $dbh = C4::Context->dbh; |
58 |
|
58 |
|
59 |
$dbh->do('SET FOREIGN_KEY_CHECKS = 0'); |
|
|
60 |
$dbh->do("SET time_zone='+00:00'"); |
59 |
$dbh->do("SET time_zone='+00:00'"); |
61 |
$dbh->do('TRUNCATE biblio'); |
60 |
$dbh->do('DELETE FROM biblio'); |
62 |
$dbh->do('TRUNCATE biblioitems'); |
61 |
$dbh->do('DELETE FROM deletedbiblio'); |
63 |
$dbh->do('TRUNCATE issues'); |
62 |
$dbh->do('DELETE FROM deletedbiblioitems'); |
|
|
63 |
$dbh->do('DELETE FROM deleteditems'); |
64 |
|
64 |
|
65 |
my $date_added = DateTime->now() . 'Z'; |
65 |
my $date_added = DateTime->now() . 'Z'; |
66 |
my $date_to = substr($date_added, 0, 10) . 'T23:59:59Z'; |
66 |
my $date_to = substr($date_added, 0, 10) . 'T23:59:59Z'; |
Lines 68-91
my (@header, @marcxml, @oaidc);
Link Here
|
68 |
my $sth = $dbh->prepare('SELECT timestamp FROM biblioitems WHERE biblionumber=?'); |
68 |
my $sth = $dbh->prepare('SELECT timestamp FROM biblioitems WHERE biblionumber=?'); |
69 |
|
69 |
|
70 |
# Add 10 biblio records |
70 |
# Add 10 biblio records |
71 |
foreach( 1..10 ) { |
71 |
foreach my $index ( 0..9 ) { |
72 |
my $record = MARC::Record->new(); |
72 |
my $record = MARC::Record->new(); |
73 |
$record->append_fields( MARC::Field->new('245', '', '', 'a' => "Title $_" ) ); |
73 |
$record->append_fields( MARC::Field->new('245', '', '', 'a' => "Title $index" ) ); |
74 |
my ($biblionumber) = AddBiblio($record, ''); |
74 |
my ($biblionumber) = AddBiblio($record, ''); |
75 |
$sth->execute($biblionumber); |
75 |
$sth->execute($biblionumber); |
76 |
my $timestamp = $sth->fetchrow_array . 'Z'; |
76 |
my $timestamp = $sth->fetchrow_array . 'Z'; |
77 |
$timestamp =~ s/ /T/; |
77 |
$timestamp =~ s/ /T/; |
78 |
$record = GetMarcBiblio($biblionumber); |
78 |
$record = GetMarcBiblio($biblionumber); |
79 |
$record = XMLin($record->as_xml_record); |
79 |
$record = XMLin($record->as_xml_record); |
80 |
$header[$biblionumber] = { datestamp => $timestamp, identifier => "TEST:$biblionumber" }; |
80 |
push @header, { datestamp => $timestamp, identifier => "TEST:$biblionumber" }; |
81 |
delete $record->{$_} for (('xmlns','xmlns:xsi','xsi:schemaLocation')); |
81 |
delete $record->{$_} for (('xmlns','xmlns:xsi','xsi:schemaLocation')); |
82 |
$oaidc[$biblionumber] = { |
82 |
push @oaidc, { |
83 |
header => $header[$biblionumber], |
83 |
header => $header[$index], |
84 |
metadata => { |
84 |
metadata => { |
85 |
'oai_dc:dcCollection' => { |
85 |
'oai_dc:dcCollection' => { |
86 |
'oai_dc:dc' => { |
86 |
'oai_dc:dc' => { |
87 |
'dc:title' => { |
87 |
'dc:title' => { |
88 |
'content' => "Title $biblionumber", |
88 |
'content' => "Title $index", |
89 |
'xmlns:dc' => 'http://purl.org/dc/elements/1.1/' |
89 |
'xmlns:dc' => 'http://purl.org/dc/elements/1.1/' |
90 |
}, |
90 |
}, |
91 |
'dc:language' => { |
91 |
'dc:language' => { |
Lines 101-111
foreach( 1..10 ) {
Link Here
|
101 |
}, |
101 |
}, |
102 |
}, |
102 |
}, |
103 |
}; |
103 |
}; |
104 |
$marcxml[$biblionumber] = { |
104 |
push @marcxml, { |
105 |
header => $header[$biblionumber], |
105 |
header => $header[$index], |
106 |
metadata => { |
106 |
metadata => { |
107 |
collection => { |
107 |
collection => { |
108 |
record => $record, |
108 |
record => $record, |
109 |
"xmlns" => "http://www.loc.gov/MARC21/slim", |
109 |
"xmlns" => "http://www.loc.gov/MARC21/slim", |
110 |
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance", |
110 |
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance", |
111 |
"xsi:schemaLocation" => "http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd", |
111 |
"xsi:schemaLocation" => "http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd", |
Lines 188-197
test_query('ListIdentifiers without metadataPrefix', {verb => 'ListIdentifiers'}
Link Here
|
188 |
}, |
188 |
}, |
189 |
}); |
189 |
}); |
190 |
|
190 |
|
191 |
|
|
|
192 |
test_query('ListIdentifiers', {verb => 'ListIdentifiers', metadataPrefix => 'marcxml'}, { |
191 |
test_query('ListIdentifiers', {verb => 'ListIdentifiers', metadataPrefix => 'marcxml'}, { |
193 |
ListIdentifiers => { |
192 |
ListIdentifiers => { |
194 |
header => [ @header[1..3] ], |
193 |
header => [ @header[0..2] ], |
195 |
resumptionToken => { |
194 |
resumptionToken => { |
196 |
content => "marcxml/3/1970-01-01T00:00:00Z/$date_to//0", |
195 |
content => "marcxml/3/1970-01-01T00:00:00Z/$date_to//0", |
197 |
cursor => 3, |
196 |
cursor => 3, |
Lines 201-207
test_query('ListIdentifiers', {verb => 'ListIdentifiers', metadataPrefix => 'mar
Link Here
|
201 |
|
200 |
|
202 |
test_query('ListIdentifiers', {verb => 'ListIdentifiers', metadataPrefix => 'marcxml'}, { |
201 |
test_query('ListIdentifiers', {verb => 'ListIdentifiers', metadataPrefix => 'marcxml'}, { |
203 |
ListIdentifiers => { |
202 |
ListIdentifiers => { |
204 |
header => [ @header[1..3] ], |
203 |
header => [ @header[0..2] ], |
205 |
resumptionToken => { |
204 |
resumptionToken => { |
206 |
content => "marcxml/3/1970-01-01T00:00:00Z/$date_to//0", |
205 |
content => "marcxml/3/1970-01-01T00:00:00Z/$date_to//0", |
207 |
cursor => 3, |
206 |
cursor => 3, |
Lines 214-220
test_query(
Link Here
|
214 |
{ verb => 'ListIdentifiers', resumptionToken => "marcxml/3/1970-01-01T00:00:00Z/$date_to//0" }, |
213 |
{ verb => 'ListIdentifiers', resumptionToken => "marcxml/3/1970-01-01T00:00:00Z/$date_to//0" }, |
215 |
{ |
214 |
{ |
216 |
ListIdentifiers => { |
215 |
ListIdentifiers => { |
217 |
header => [ @header[4..6] ], |
216 |
header => [ @header[3..5] ], |
218 |
resumptionToken => { |
217 |
resumptionToken => { |
219 |
content => "marcxml/6/1970-01-01T00:00:00Z/$date_to//0", |
218 |
content => "marcxml/6/1970-01-01T00:00:00Z/$date_to//0", |
220 |
cursor => 6, |
219 |
cursor => 6, |
Lines 229-235
test_query(
Link Here
|
229 |
{ verb => 'ListIdentifiers', resumptionToken => "marcxml/6/1970-01-01T00:00:00Z/$date_to//0" }, |
228 |
{ verb => 'ListIdentifiers', resumptionToken => "marcxml/6/1970-01-01T00:00:00Z/$date_to//0" }, |
230 |
{ |
229 |
{ |
231 |
ListIdentifiers => { |
230 |
ListIdentifiers => { |
232 |
header => [ @header[7..9] ], |
231 |
header => [ @header[6..8] ], |
233 |
resumptionToken => { |
232 |
resumptionToken => { |
234 |
content => "marcxml/9/1970-01-01T00:00:00Z/$date_to//0", |
233 |
content => "marcxml/9/1970-01-01T00:00:00Z/$date_to//0", |
235 |
cursor => 9, |
234 |
cursor => 9, |
Lines 244-250
test_query(
Link Here
|
244 |
{ verb => 'ListIdentifiers', resumptionToken => "marcxml/9/1970-01-01T00:00:00Z/$date_to//0" }, |
243 |
{ verb => 'ListIdentifiers', resumptionToken => "marcxml/9/1970-01-01T00:00:00Z/$date_to//0" }, |
245 |
{ |
244 |
{ |
246 |
ListIdentifiers => { |
245 |
ListIdentifiers => { |
247 |
header => $header[10], |
246 |
header => $header[9], |
248 |
}, |
247 |
}, |
249 |
|
248 |
|
250 |
}, |
249 |
}, |
Lines 259-265
test_query('ListRecords marcxml without metadataPrefix', {verb => 'ListRecords'}
Link Here
|
259 |
|
258 |
|
260 |
test_query('ListRecords marcxml', {verb => 'ListRecords', metadataPrefix => 'marcxml'}, { |
259 |
test_query('ListRecords marcxml', {verb => 'ListRecords', metadataPrefix => 'marcxml'}, { |
261 |
ListRecords => { |
260 |
ListRecords => { |
262 |
record => [ @marcxml[1..3] ], |
261 |
record => [ @marcxml[0..2] ], |
263 |
resumptionToken => { |
262 |
resumptionToken => { |
264 |
content => "marcxml/3/1970-01-01T00:00:00Z/$date_to//0", |
263 |
content => "marcxml/3/1970-01-01T00:00:00Z/$date_to//0", |
265 |
cursor => 3, |
264 |
cursor => 3, |
Lines 271-277
test_query(
Link Here
|
271 |
'ListRecords marcxml with resumptionToken 1', |
270 |
'ListRecords marcxml with resumptionToken 1', |
272 |
{ verb => 'ListRecords', resumptionToken => "marcxml/3/1970-01-01T00:00:00Z/$date_to//0" }, |
271 |
{ verb => 'ListRecords', resumptionToken => "marcxml/3/1970-01-01T00:00:00Z/$date_to//0" }, |
273 |
{ ListRecords => { |
272 |
{ ListRecords => { |
274 |
record => [ @marcxml[4..6] ], |
273 |
record => [ @marcxml[3..5] ], |
275 |
resumptionToken => { |
274 |
resumptionToken => { |
276 |
content => "marcxml/6/1970-01-01T00:00:00Z/$date_to//0", |
275 |
content => "marcxml/6/1970-01-01T00:00:00Z/$date_to//0", |
277 |
cursor => 6, |
276 |
cursor => 6, |
Lines 283-289
test_query(
Link Here
|
283 |
'ListRecords marcxml with resumptionToken 2', |
282 |
'ListRecords marcxml with resumptionToken 2', |
284 |
{ verb => 'ListRecords', resumptionToken => "marcxml/6/1970-01-01T00:00:00Z/$date_to//0" }, |
283 |
{ verb => 'ListRecords', resumptionToken => "marcxml/6/1970-01-01T00:00:00Z/$date_to//0" }, |
285 |
{ ListRecords => { |
284 |
{ ListRecords => { |
286 |
record => [ @marcxml[7..9] ], |
285 |
record => [ @marcxml[6..8] ], |
287 |
resumptionToken => { |
286 |
resumptionToken => { |
288 |
content => "marcxml/9/1970-01-01T00:00:00Z/$date_to//0", |
287 |
content => "marcxml/9/1970-01-01T00:00:00Z/$date_to//0", |
289 |
cursor => 9, |
288 |
cursor => 9, |
Lines 296-308
test_query(
Link Here
|
296 |
'ListRecords marcxml with resumptionToken 3, response without resumption', |
295 |
'ListRecords marcxml with resumptionToken 3, response without resumption', |
297 |
{ verb => 'ListRecords', resumptionToken => "marcxml/9/1970-01-01T00:00:00Z/$date_to//0" }, |
296 |
{ verb => 'ListRecords', resumptionToken => "marcxml/9/1970-01-01T00:00:00Z/$date_to//0" }, |
298 |
{ ListRecords => { |
297 |
{ ListRecords => { |
299 |
record => $marcxml[10], |
298 |
record => $marcxml[9], |
300 |
}, |
299 |
}, |
301 |
}); |
300 |
}); |
302 |
|
301 |
|
303 |
test_query('ListRecords oai_dc', {verb => 'ListRecords', metadataPrefix => 'oai_dc'}, { |
302 |
test_query('ListRecords oai_dc', {verb => 'ListRecords', metadataPrefix => 'oai_dc'}, { |
304 |
ListRecords => { |
303 |
ListRecords => { |
305 |
record => [ @oaidc[1..3] ], |
304 |
record => [ @oaidc[0..2] ], |
306 |
resumptionToken => { |
305 |
resumptionToken => { |
307 |
content => "oai_dc/3/1970-01-01T00:00:00Z/$date_to//0", |
306 |
content => "oai_dc/3/1970-01-01T00:00:00Z/$date_to//0", |
308 |
cursor => 3, |
307 |
cursor => 3, |
Lines 314-320
test_query(
Link Here
|
314 |
'ListRecords oai_dc with resumptionToken 1', |
313 |
'ListRecords oai_dc with resumptionToken 1', |
315 |
{ verb => 'ListRecords', resumptionToken => "oai_dc/3/1970-01-01T00:00:00Z/$date_to//0" }, |
314 |
{ verb => 'ListRecords', resumptionToken => "oai_dc/3/1970-01-01T00:00:00Z/$date_to//0" }, |
316 |
{ ListRecords => { |
315 |
{ ListRecords => { |
317 |
record => [ @oaidc[4..6] ], |
316 |
record => [ @oaidc[3..5] ], |
318 |
resumptionToken => { |
317 |
resumptionToken => { |
319 |
content => "oai_dc/6/1970-01-01T00:00:00Z/$date_to//0", |
318 |
content => "oai_dc/6/1970-01-01T00:00:00Z/$date_to//0", |
320 |
cursor => 6, |
319 |
cursor => 6, |
Lines 326-332
test_query(
Link Here
|
326 |
'ListRecords oai_dc with resumptionToken 2', |
325 |
'ListRecords oai_dc with resumptionToken 2', |
327 |
{ verb => 'ListRecords', resumptionToken => "oai_dc/6/1970-01-01T00:00:00Z/$date_to//0" }, |
326 |
{ verb => 'ListRecords', resumptionToken => "oai_dc/6/1970-01-01T00:00:00Z/$date_to//0" }, |
328 |
{ ListRecords => { |
327 |
{ ListRecords => { |
329 |
record => [ @oaidc[7..9] ], |
328 |
record => [ @oaidc[6..8] ], |
330 |
resumptionToken => { |
329 |
resumptionToken => { |
331 |
content => "oai_dc/9/1970-01-01T00:00:00Z/$date_to//0", |
330 |
content => "oai_dc/9/1970-01-01T00:00:00Z/$date_to//0", |
332 |
cursor => 9, |
331 |
cursor => 9, |
Lines 339-345
test_query(
Link Here
|
339 |
'ListRecords oai_dc with resumptionToken 3, response without resumption', |
338 |
'ListRecords oai_dc with resumptionToken 3, response without resumption', |
340 |
{ verb => 'ListRecords', resumptionToken => "oai_dc/9/1970-01-01T00:00:00Z/$date_to//0" }, |
339 |
{ verb => 'ListRecords', resumptionToken => "oai_dc/9/1970-01-01T00:00:00Z/$date_to//0" }, |
341 |
{ ListRecords => { |
340 |
{ ListRecords => { |
342 |
record => $oaidc[10], |
341 |
record => $oaidc[9], |
343 |
}, |
342 |
}, |
344 |
}); |
343 |
}); |
345 |
|
344 |
|
346 |
- |
|
|