berkeley_library-alma 0.0.3 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.idea/alma.iml +22 -21
- data/.idea/inspectionProfiles/Project_Default.xml +2 -0
- data/CHANGES.md +16 -0
- data/README.md +43 -5
- data/berkeley_library-alma.gemspec +1 -1
- data/bin/alma-mms-lookup +1 -3
- data/lib/berkeley_library/alma/barcode.rb +33 -0
- data/lib/berkeley_library/alma/module_info.rb +1 -1
- data/lib/berkeley_library/alma/record_id.rb +8 -26
- data/lib/berkeley_library/alma/sru/sru.rb +102 -0
- data/lib/berkeley_library/alma/sru/xml_reader.rb +148 -0
- data/lib/berkeley_library/alma/sru.rb +1 -0
- data/spec/data/C084093187-sru.xml +299 -0
- data/spec/data/availability-sru-page-1.xml +522 -0
- data/spec/data/availability-sru-page-2.xml +266 -0
- data/spec/data/availability-sru.xml +109 -0
- data/spec/data/{b11082434-sru.xml → b110824349-sru.xml} +0 -0
- data/spec/lib/berkeley_library/alma/barcode_spec.rb +67 -0
- data/spec/lib/berkeley_library/alma/bib_number_spec.rb +2 -1
- data/spec/lib/berkeley_library/alma/mms_id_spec.rb +3 -3
- data/spec/lib/berkeley_library/alma/record_id_spec.rb +20 -0
- data/spec/lib/berkeley_library/alma/sru/sru_spec.rb +98 -0
- data/spec/lib/berkeley_library/alma/sru/xml_reader_spec.rb +75 -0
- data/spec/spec_helper.rb +6 -15
- metadata +24 -6
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module BerkeleyLibrary
|
4
|
+
module Alma
|
5
|
+
module SRU
|
6
|
+
describe XMLReader do
|
7
|
+
let(:sru_xml_1) { File.read('spec/data/availability-sru-page-1.xml') }
|
8
|
+
let(:sru_xml_2) { File.read('spec/data/availability-sru-page-2.xml') }
|
9
|
+
|
10
|
+
let(:reader) { XMLReader.read(sru_xml_2) }
|
11
|
+
let(:expected_ids) { %w[991008719659706532 991005668209706532 991008363529706532 991008402049706532 991008719819706532] }
|
12
|
+
|
13
|
+
it 'reads the records' do
|
14
|
+
records = reader.to_a
|
15
|
+
expect(records.size).to eq(expected_ids.size)
|
16
|
+
expect(records.map(&:record_id)).to eq(expected_ids)
|
17
|
+
end
|
18
|
+
|
19
|
+
describe :new do
|
20
|
+
it 'raises an error for unreadable sources' do
|
21
|
+
not_xml = Object.new
|
22
|
+
expect { XMLReader.read(not_xml) }.to raise_error(ArgumentError)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe :num_records do
|
27
|
+
it 'returns the <numberOfRecords/> value' do
|
28
|
+
reader.first # make sure we've gotten far enough in the doc to parse
|
29
|
+
expect(reader.num_records).to eq(15)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe :last_record_position do
|
34
|
+
it 'returns the (1-indexed) position of the most recent record' do
|
35
|
+
position_base = 11
|
36
|
+
reader.each_with_index do |_, i|
|
37
|
+
expect(reader.last_record_position).to eq(position_base + i)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe :last_record_id do
|
43
|
+
it 'returns the ID of the most recent record' do
|
44
|
+
reader.each do |record|
|
45
|
+
expect(reader.last_record_id).to eq(record.record_id)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe :next_record_position do
|
51
|
+
it 'returns nil if there is no next page' do
|
52
|
+
reader.to_a # read all records
|
53
|
+
expect(reader.next_record_position).to be_nil
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'returns the record position of the next page' do
|
57
|
+
reader = XMLReader.read(sru_xml_1)
|
58
|
+
reader.to_a # read all records
|
59
|
+
expect(reader.next_record_position).to eq(11)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe :records_yielded do
|
64
|
+
it 'returns the number of records yielded' do
|
65
|
+
expect(reader.records_yielded).to eq(0)
|
66
|
+
reader.each_with_index do |_, i|
|
67
|
+
expect(reader.records_yielded).to eq(i)
|
68
|
+
end
|
69
|
+
expect(reader.records_yielded).to eq(5)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -31,26 +31,17 @@ require 'berkeley_library/alma'
|
|
31
31
|
# ------------------------------------------------------------
|
32
32
|
# Utility methods
|
33
33
|
|
34
|
-
def sru_url_for(
|
35
|
-
|
36
|
-
|
37
|
-
if BerkeleyLibrary::Alma::Constants::ALMA_RECORD_RE =~ record_id
|
38
|
-
"#{sru_url_base}alma.mms_id%3D#{record_id}"
|
39
|
-
elsif BerkeleyLibrary::Alma::Constants::MILLENNIUM_RECORD_RE =~ record_id
|
40
|
-
full_bib_number = BerkeleyLibrary::Alma::BibNumber.new(record_id).to_s
|
41
|
-
"#{sru_url_base}alma.local_field_996%3D#{full_bib_number}"
|
42
|
-
else
|
43
|
-
raise ArgumentError, "Unknown record ID type: #{record_id}"
|
44
|
-
end
|
34
|
+
def sru_url_for(index, value)
|
35
|
+
"https://berkeley.alma.exlibrisgroup.com/view/sru/01UCS_BER?version=1.2&operation=searchRetrieve&query=#{index}%3D#{value}"
|
45
36
|
end
|
46
37
|
|
47
38
|
def sru_data_path_for(record_id)
|
48
39
|
"spec/data/#{record_id}-sru.xml"
|
49
40
|
end
|
50
41
|
|
51
|
-
def stub_sru_request(
|
52
|
-
|
53
|
-
marc_xml_path = sru_data_path_for(
|
42
|
+
def stub_sru_request(index, value)
|
43
|
+
sru_url_ = sru_url_for(index, value)
|
44
|
+
marc_xml_path = sru_data_path_for(value)
|
54
45
|
|
55
|
-
stub_request(:get,
|
46
|
+
stub_request(:get, sru_url_).to_return(status: 200, body: File.read(marc_xml_path))
|
56
47
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berkeley_library-alma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Moles
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: berkeley_library-logging
|
@@ -47,7 +47,7 @@ dependencies:
|
|
47
47
|
version: '0.1'
|
48
48
|
- - ">="
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: 0.1.
|
50
|
+
version: 0.1.2
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -57,7 +57,7 @@ dependencies:
|
|
57
57
|
version: '0.1'
|
58
58
|
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 0.1.
|
60
|
+
version: 0.1.2
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: nokogiri
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -269,12 +269,16 @@ files:
|
|
269
269
|
- bin/alma-mms-lookup
|
270
270
|
- docker-compose.yml
|
271
271
|
- lib/berkeley_library/alma.rb
|
272
|
+
- lib/berkeley_library/alma/barcode.rb
|
272
273
|
- lib/berkeley_library/alma/bib_number.rb
|
273
274
|
- lib/berkeley_library/alma/config.rb
|
274
275
|
- lib/berkeley_library/alma/constants.rb
|
275
276
|
- lib/berkeley_library/alma/mms_id.rb
|
276
277
|
- lib/berkeley_library/alma/module_info.rb
|
277
278
|
- lib/berkeley_library/alma/record_id.rb
|
279
|
+
- lib/berkeley_library/alma/sru.rb
|
280
|
+
- lib/berkeley_library/alma/sru/sru.rb
|
281
|
+
- lib/berkeley_library/alma/sru/xml_reader.rb
|
278
282
|
- rakelib/bundle.rake
|
279
283
|
- rakelib/coverage.rake
|
280
284
|
- rakelib/gem.rake
|
@@ -282,12 +286,19 @@ files:
|
|
282
286
|
- rakelib/spec.rake
|
283
287
|
- spec/.rubocop.yml
|
284
288
|
- spec/data/991054360089706532-sru.xml
|
285
|
-
- spec/data/
|
289
|
+
- spec/data/C084093187-sru.xml
|
290
|
+
- spec/data/availability-sru-page-1.xml
|
291
|
+
- spec/data/availability-sru-page-2.xml
|
292
|
+
- spec/data/availability-sru.xml
|
293
|
+
- spec/data/b110824349-sru.xml
|
286
294
|
- spec/data/bibs_with_check_digits.txt
|
295
|
+
- spec/lib/berkeley_library/alma/barcode_spec.rb
|
287
296
|
- spec/lib/berkeley_library/alma/bib_number_spec.rb
|
288
297
|
- spec/lib/berkeley_library/alma/config_spec.rb
|
289
298
|
- spec/lib/berkeley_library/alma/mms_id_spec.rb
|
290
299
|
- spec/lib/berkeley_library/alma/record_id_spec.rb
|
300
|
+
- spec/lib/berkeley_library/alma/sru/sru_spec.rb
|
301
|
+
- spec/lib/berkeley_library/alma/sru/xml_reader_spec.rb
|
291
302
|
- spec/spec_helper.rb
|
292
303
|
homepage: https://github.com/BerkeleyLibrary/alma
|
293
304
|
licenses:
|
@@ -315,10 +326,17 @@ summary: Alma/Primo utilities for the UC Berkeley Library
|
|
315
326
|
test_files:
|
316
327
|
- spec/.rubocop.yml
|
317
328
|
- spec/data/991054360089706532-sru.xml
|
318
|
-
- spec/data/
|
329
|
+
- spec/data/C084093187-sru.xml
|
330
|
+
- spec/data/availability-sru-page-1.xml
|
331
|
+
- spec/data/availability-sru-page-2.xml
|
332
|
+
- spec/data/availability-sru.xml
|
333
|
+
- spec/data/b110824349-sru.xml
|
319
334
|
- spec/data/bibs_with_check_digits.txt
|
335
|
+
- spec/lib/berkeley_library/alma/barcode_spec.rb
|
320
336
|
- spec/lib/berkeley_library/alma/bib_number_spec.rb
|
321
337
|
- spec/lib/berkeley_library/alma/config_spec.rb
|
322
338
|
- spec/lib/berkeley_library/alma/mms_id_spec.rb
|
323
339
|
- spec/lib/berkeley_library/alma/record_id_spec.rb
|
340
|
+
- spec/lib/berkeley_library/alma/sru/sru_spec.rb
|
341
|
+
- spec/lib/berkeley_library/alma/sru/xml_reader_spec.rb
|
324
342
|
- spec/spec_helper.rb
|