libis-services 1.0.10 → 1.0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/libis/services/oai.rb +39 -16
- data/lib/libis/services/oracle_client.rb +9 -0
- data/lib/libis/services/rosetta/client.rb +1 -1
- data/lib/libis/services/rosetta/collection_handler.rb +1 -1
- data/lib/libis/services/rosetta/deposit_handler.rb +1 -1
- data/lib/libis/services/rosetta/ie_handler.rb +3 -3
- data/lib/libis/services/rosetta/oai_pmh.rb +4 -4
- data/lib/libis/services/rosetta/producer_handler.rb +1 -1
- data/lib/libis/services/rosetta/service.rb +1 -1
- data/lib/libis/services/rosetta/sip_handler.rb +1 -1
- data/lib/libis/services/rosetta/user_manager.rb +1 -1
- data/lib/libis/services/version.rb +1 -1
- data/libis-services.gemspec +3 -2
- data/spec/alma_service_spec.rb +12 -134
- data/spec/ie_data.rb +0 -326
- data/spec/rosetta_auth_spec.rb +5 -4
- data/spec/rosetta_collection_spec.rb +0 -14
- data/spec/rosetta_ie_spec.rb +3 -17
- data/spec/rosetta_oai_spec.rb +50 -11
- data/spec/rosetta_pds_spec.rb +4 -3
- data/spec/rosetta_producer_spec.rb +42 -48
- data/spec/scope_search_spec.rb +2 -2
- data/spec/spec_helper.rb +47 -20
- metadata +21 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0cb4a19cf2e21d0a98cc25d510e0c3509b2a9a8ac64de25f42ae2db62066295b
|
4
|
+
data.tar.gz: 9b60e51ed5881010fcde0ff7918368d9db43e7bbf26172bdde1674a44a250176
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cce6bcd91d6f976253d6539b9e114409f14316757e6f06b06c9b3a08fcdb0200f1e3211f508650b9c435216fb29260e7e3ece0455491ea631ffd9be1ebe131ee
|
7
|
+
data.tar.gz: 0dec285395763bf5497f3da62a8ff769bc8f7edb0bee055d28e0971bb25eed697ef72421731d4cada038cd923cf6f046c15efeeb1eb7b5de014234e373769d19
|
data/lib/libis/services/oai.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'oai'
|
2
2
|
require 'libis/tools/extend/hash'
|
3
|
+
require 'libis/tools/xml_document'
|
3
4
|
require 'libis/services/service_error'
|
4
5
|
|
5
6
|
module Libis
|
@@ -8,15 +9,24 @@ module Libis
|
|
8
9
|
include OAI::XPath
|
9
10
|
|
10
11
|
class Query
|
11
|
-
attr_accessor :from, :until, :set, :metadata_prefix
|
12
12
|
|
13
|
-
def
|
14
|
-
@
|
15
|
-
@metadata_prefix
|
13
|
+
def initialize(options = {})
|
14
|
+
@options = options
|
15
|
+
@options[:metadata_prefix] ||= 'oai_dc'
|
16
|
+
end
|
17
|
+
|
18
|
+
def [](key, value)
|
19
|
+
@options[key] = value
|
16
20
|
end
|
17
21
|
|
18
22
|
def to_hash
|
19
|
-
{
|
23
|
+
{
|
24
|
+
from: @options[:from],
|
25
|
+
until: @options[:until],
|
26
|
+
metadata_prefix: @options[:metadata_prefix],
|
27
|
+
set: @options[:set],
|
28
|
+
resumption_token: @options[:token] || @options[:resumption_token]
|
29
|
+
}.cleanup
|
20
30
|
end
|
21
31
|
|
22
32
|
end
|
@@ -35,28 +45,41 @@ module Libis
|
|
35
45
|
do_oai_request(:list_sets, options)
|
36
46
|
end
|
37
47
|
|
38
|
-
def
|
48
|
+
def metadata_formats(identifier = nil)
|
39
49
|
do_oai_request(:list_metadata_formats, {identifier: identifier})
|
40
50
|
end
|
41
51
|
|
42
|
-
def identifiers(
|
43
|
-
|
44
|
-
do_oai_request(:list_identifiers, options)
|
52
|
+
def identifiers(token_or_query = nil)
|
53
|
+
do_oai_request(:list_identifiers, token_or_query_to_hash(token_or_query))
|
45
54
|
end
|
46
55
|
|
47
|
-
def records(
|
48
|
-
|
49
|
-
do_oai_request(:list_records, options)
|
56
|
+
def records(token_or_query = nil)
|
57
|
+
do_oai_request(:list_records, token_or_query_to_hash(token_or_query))
|
50
58
|
end
|
51
59
|
|
52
|
-
def record(identifier, metadata_prefix)
|
60
|
+
def record(identifier, metadata_prefix = 'oai_dc')
|
53
61
|
do_oai_request(:get_record, identifier: identifier, metadata_prefix: metadata_prefix)
|
54
62
|
end
|
55
63
|
|
56
|
-
|
64
|
+
protected
|
65
|
+
|
66
|
+
def token_or_query_to_hash(token_or_query)
|
67
|
+
case token_or_query
|
68
|
+
when Hash
|
69
|
+
Query.new(token_or_query).to_hash
|
70
|
+
when Query
|
71
|
+
token_or_query.to_hash
|
72
|
+
when String
|
73
|
+
{ resumption_token: token_or_query }
|
74
|
+
else
|
75
|
+
{}
|
76
|
+
end
|
77
|
+
end
|
57
78
|
|
79
|
+
private
|
80
|
+
|
58
81
|
def do_oai_request(method, options = {})
|
59
|
-
response = @oai_client.send(method, options.cleanup)
|
82
|
+
response = options.cleanup.empty? ? @oai_client.send(method): @oai_client.send(method, options.cleanup)
|
60
83
|
object_to_hash(response)
|
61
84
|
rescue OAI::Exception => e
|
62
85
|
raise Libis::Services::ServiceError, "OAI Error: #{e.code} - #{e.message}"
|
@@ -71,7 +94,7 @@ module Libis
|
|
71
94
|
h[k] = object_to_hash(v)
|
72
95
|
end
|
73
96
|
when REXML::Element
|
74
|
-
obj.to_s
|
97
|
+
Libis::Tools::XmlDocument.parse(obj.to_s).to_hash
|
75
98
|
when OAI::Response, OAI::Header, OAI::Record, OAI::MetadataFormat, OAI::Set
|
76
99
|
result = obj.instance_variables.map do |x|
|
77
100
|
x[1..-1].to_sym
|
@@ -60,6 +60,15 @@ module Libis
|
|
60
60
|
oci.exec(statement, *bindvars, &block)
|
61
61
|
end
|
62
62
|
|
63
|
+
def parse(statement)
|
64
|
+
oci.parse(statement)
|
65
|
+
end
|
66
|
+
|
67
|
+
def cursor_exec(cursor, **binvars)
|
68
|
+
bindvars.each { |k, v| cursor.bind_param(k, v) }
|
69
|
+
cursor.exec
|
70
|
+
end
|
71
|
+
|
63
72
|
def table(name)
|
64
73
|
metadata = oci.describe_table(name)
|
65
74
|
{
|
@@ -28,7 +28,7 @@ module Libis
|
|
28
28
|
]
|
29
29
|
end
|
30
30
|
opts = {strip_namespaces: true, logger: ::Libis::Tools::Config.logger}.merge options
|
31
|
-
base_url = opts.delete(:url) || '
|
31
|
+
base_url = opts.delete(:url) || 'https://repository.teneo.libis.be'
|
32
32
|
configure "#{base_url}/dpsws/#{section}/#{service}?wsdl", opts
|
33
33
|
end
|
34
34
|
|
@@ -12,7 +12,7 @@ module Libis
|
|
12
12
|
class CollectionHandler < Libis::Services::Rosetta::Client
|
13
13
|
|
14
14
|
|
15
|
-
def initialize(base_url = '
|
15
|
+
def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
|
16
16
|
super 'repository', 'CollectionWebServices', {url: base_url}.merge(options)
|
17
17
|
end
|
18
18
|
|
@@ -9,7 +9,7 @@ module Libis
|
|
9
9
|
|
10
10
|
class DepositHandler < ::Libis::Services::Rosetta::Client
|
11
11
|
|
12
|
-
def initialize(base_url = '
|
12
|
+
def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
|
13
13
|
super 'deposit', 'DepositWebServices', {url: base_url}.merge(options)
|
14
14
|
end
|
15
15
|
|
@@ -10,18 +10,18 @@ module Libis
|
|
10
10
|
|
11
11
|
class IeHandler < Libis::Services::Rosetta::Client
|
12
12
|
|
13
|
-
def initialize(base_url = '
|
13
|
+
def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
|
14
14
|
super 'repository', 'IEWebServices', {url: base_url}.merge(options)
|
15
15
|
end
|
16
16
|
|
17
17
|
def get_mets(ie, flags = 0)
|
18
18
|
result = call_raw :get_ie, pds_handle: @pds_handle, ie_pid: ie, flags: flags
|
19
|
-
Libis::Tools::MetsFile.parse(result
|
19
|
+
Libis::Tools::MetsFile.parse(result)
|
20
20
|
end
|
21
21
|
|
22
22
|
def get_metadata(ie)
|
23
23
|
result = call_raw :get_md, pds_handle: @pds_handle, 'PID' => ie
|
24
|
-
Libis::Tools::MetsFile.parse(result
|
24
|
+
Libis::Tools::MetsFile.parse(result)
|
25
25
|
end
|
26
26
|
|
27
27
|
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
require 'libis/services/oai'
|
2
|
+
require 'libis/tools/xml_document'
|
2
3
|
|
3
4
|
module Libis
|
4
5
|
module Services
|
5
6
|
module Rosetta
|
6
7
|
class OaiPmh < Libis::Services::Oai
|
7
8
|
|
8
|
-
def initialize(base_url = '
|
9
|
+
def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
|
9
10
|
super(base_url + '/oaiprovider/request')
|
10
11
|
end
|
11
12
|
|
12
|
-
def collections(institute,
|
13
|
-
|
14
|
-
records(token, query)
|
13
|
+
def collections(institute, token_or_query = nil)
|
14
|
+
records(token_or_query_to_hash(token_or_query).merge(set: "#{institute}-collections"))
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
@@ -13,7 +13,7 @@ module Libis
|
|
13
13
|
class ProducerHandler < Libis::Services::Rosetta::Client
|
14
14
|
|
15
15
|
|
16
|
-
def initialize(base_url = '
|
16
|
+
def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
|
17
17
|
super 'backoffice', 'ProducerWebServices', {url: base_url}.merge(options)
|
18
18
|
end
|
19
19
|
|
@@ -26,7 +26,7 @@ module Libis
|
|
26
26
|
attr_reader :pds_service, :producer_service, :deposit_service, :sip_service, :ie_service, :collection_service
|
27
27
|
|
28
28
|
# @param [String] base_url
|
29
|
-
def initialize(base_url = '
|
29
|
+
def initialize(base_url = 'https://repository.teneo.libis.be', pds_url = 'https://pds.libis.be', opts = {})
|
30
30
|
@pds_service = Libis::Services::Rosetta::PdsHandler.new pds_url
|
31
31
|
@producer_service = Libis::Services::Rosetta::ProducerHandler.new base_url, opts
|
32
32
|
@deposit_service = Libis::Services::Rosetta::DepositHandler.new base_url, opts
|
@@ -11,7 +11,7 @@ module Libis
|
|
11
11
|
|
12
12
|
class SipHandler < Libis::Services::Rosetta::Client
|
13
13
|
|
14
|
-
def initialize(base_url = '
|
14
|
+
def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
|
15
15
|
super 'repository', 'SipWebServices', {url: base_url}.merge(options)
|
16
16
|
end
|
17
17
|
|
@@ -10,7 +10,7 @@ module Libis
|
|
10
10
|
|
11
11
|
class UserManager < Libis::Services::Rosetta::Client
|
12
12
|
|
13
|
-
def initialize(base_url = '
|
13
|
+
def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
|
14
14
|
super 'infra', 'UserManagerWS', {url: base_url}.merge(options)
|
15
15
|
end
|
16
16
|
|
data/libis-services.gemspec
CHANGED
@@ -27,12 +27,13 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency 'simplecov', '~> 0.9'
|
28
28
|
spec.add_development_dependency 'coveralls', '~> 0.7'
|
29
29
|
spec.add_development_dependency 'equivalent-xml', '~> 0.6'
|
30
|
+
spec.add_development_dependency 'rexml'
|
30
31
|
|
31
32
|
spec.add_runtime_dependency 'libis-tools', '~> 1.0'
|
32
|
-
spec.add_runtime_dependency 'highline', '~>
|
33
|
+
spec.add_runtime_dependency 'highline', '~> 2.0'
|
33
34
|
spec.add_runtime_dependency 'savon', '~> 2.11'
|
34
35
|
spec.add_runtime_dependency 'rest-client', '~> 2.0'
|
35
|
-
spec.add_runtime_dependency 'oai', '~> 0
|
36
|
+
spec.add_runtime_dependency 'oai', '~> 1.0'
|
36
37
|
spec.add_runtime_dependency 'ruby-oci8', '~> 2.2.2' unless RUBY_PLATFORM == 'java'
|
37
38
|
spec.add_runtime_dependency 'virtus', '~> 1.0'
|
38
39
|
spec.add_runtime_dependency 'write_xlsx', '~> 0.83'
|
data/spec/alma_service_spec.rb
CHANGED
@@ -6,146 +6,17 @@ require 'libis/services/alma/sru_service'
|
|
6
6
|
|
7
7
|
describe 'Alma' do
|
8
8
|
|
9
|
-
# noinspection RubyLiteralArrayInspection
|
10
|
-
let(:record) {
|
11
|
-
{
|
12
|
-
leader: '01960nas a2200553u 4500',
|
13
|
-
controlfield: ['9930800070101471', '20170602113306.0', '881205c19679999be r|p|| 0|||a|dut c'],
|
14
|
-
datafield: [
|
15
|
-
{
|
16
|
-
subfield: '(BeLVLBS)003080007LBS01-Aleph',
|
17
|
-
:@tag => '035', :@ind1 => ' ', :@ind2 => ' '
|
18
|
-
}, {
|
19
|
-
subfield: 'Kerk en leven. Bisdom Antwerpen (0991)',
|
20
|
-
:@tag => '245', :@ind1 => '0', :@ind2 => '0'
|
21
|
-
}, {
|
22
|
-
subfield: 'K & L',
|
23
|
-
:@tag => '246', :@ind1 => '3', :@ind2 => '3'
|
24
|
-
}, {
|
25
|
-
subfield: ['Antwerpen', 'Kerk en leven,', '1967-.'],
|
26
|
-
:@tag => '260', :@ind1 => ' ', :@ind2 => ' '
|
27
|
-
}, {
|
28
|
-
subfield: 'Weekly',
|
29
|
-
:@tag => '310', :@ind1 => ' ', :@ind2 => ' '
|
30
|
-
}, {
|
31
|
-
subfield: %w(text rdacontent),
|
32
|
-
:@tag => '336', :@ind1 => ' ', :@ind2 => ' '
|
33
|
-
}, {
|
34
|
-
subfield: %w(computer rdamedia),
|
35
|
-
:@tag => '337', :@ind1 => ' ', :@ind2 => ' '
|
36
|
-
}, {
|
37
|
-
subfield: ['online resource', 'rdacarrier'],
|
38
|
-
:@tag => '338', :@ind1 => ' ', :@ind2 => ' '
|
39
|
-
}, {
|
40
|
-
subfield: 'Online',
|
41
|
-
:@tag => '340', :@ind1 => ' ', :@ind2 => ' '
|
42
|
-
}, {
|
43
|
-
subfield: 'Digitale kopie van de gedrukte uitgave',
|
44
|
-
:@tag => '500', :@ind1 => ' ', :@ind2 => ' '
|
45
|
-
}, {
|
46
|
-
subfield: ['KADOC', 'C1', 'Kerken en religie', '(ODIS-HT)'],
|
47
|
-
:@tag => '650', :@ind1 => ' ', :@ind2 => '7'
|
48
|
-
}, {
|
49
|
-
subfield: ['KADOC', 'Antwerpen [deelgemeente in gemeente Antwerpen - BE]', '(ODIS-GEO)10560000006504'],
|
50
|
-
:@tag => '650', :@ind1 => ' ', :@ind2 => '7'
|
51
|
-
}, {
|
52
|
-
subfield: ['KADOC', 'Bisdom Antwerpen (1961-heden)', '(ODIS-ORG)9284'],
|
53
|
-
:@tag => '650', :@ind1 => ' ', :@ind2 => '7'
|
54
|
-
}, {
|
55
|
-
subfield: ['KADOC', 'Studiecentrum voor Zielzorg en Predicatie', '(ODIS-ORG)24894'],
|
56
|
-
:@tag => '650', :@ind1 => ' ', :@ind2 => '7'
|
57
|
-
}, {
|
58
|
-
subfield: 'E-journals',
|
59
|
-
:@tag => '653', :@ind1 => ' ', :@ind2 => '6'
|
60
|
-
}, {
|
61
|
-
subfield: 'Collectie Kerk en Leven',
|
62
|
-
:@tag => '699', :@ind1 => ' ', :@ind2 => ' '
|
63
|
-
}, {
|
64
|
-
subfield: 'KYE000486',
|
65
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
66
|
-
}, {
|
67
|
-
subfield: ['EKAD', '(1967)7-35, 37-52'],
|
68
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
69
|
-
}, {
|
70
|
-
subfield: ['EKAD', '(1968)1-14, 17-49'],
|
71
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
72
|
-
}, {
|
73
|
-
subfield: ['EKAD', '(1969)1-10, 12-37, 39-49'],
|
74
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
75
|
-
}, {
|
76
|
-
subfield: ['EKAD', '(1970)1-50 volledig'],
|
77
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
78
|
-
}, {
|
79
|
-
subfield: ['EKAD', '(1971)1-28, 30-31, 33-37, 41-49'],
|
80
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
81
|
-
}, {
|
82
|
-
subfield: ['EKAD', '(1972)22, 30-32, 34-36, 38-50'],
|
83
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
84
|
-
}, {
|
85
|
-
subfield: ['EKAD', '(1973)1-50 volledig'],
|
86
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
87
|
-
}, {
|
88
|
-
subfield: ['EKAD', '(1974)1-25, 27-50'],
|
89
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
90
|
-
}, {
|
91
|
-
subfield: ['EKAD', '(1975)-(1992)volledig'],
|
92
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
93
|
-
}, {
|
94
|
-
subfield: ['EKAD', '(1993)1-10, 12-50'],
|
95
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
96
|
-
}, {
|
97
|
-
subfield: ['EKAD', '(1994)-(1996)volledig'],
|
98
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
99
|
-
}, {
|
100
|
-
subfield: ['EKAD', '(1997)volledig'],
|
101
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
102
|
-
}, {
|
103
|
-
subfield: ['EKAD', '(1998)1-53'],
|
104
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
105
|
-
}, {
|
106
|
-
subfield: ['EKAD', '(2000)1-16, 18-52'],
|
107
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
108
|
-
}, {
|
109
|
-
subfield: ['EKAD', '(2001)-(2003)volledig'],
|
110
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
111
|
-
}, {
|
112
|
-
subfield: ['EKAD', '(2004)1-53'],
|
113
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
114
|
-
}, {
|
115
|
-
subfield: ['EKAD', '(2005)1-8, 10-52'],
|
116
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
117
|
-
}, {
|
118
|
-
subfield: ['EKAD', '(2006)1-26, 29, 32-52'],
|
119
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
120
|
-
}, {
|
121
|
-
subfield: ['EKAD', '(2007)39-42, 44, 46-49, 51-52'],
|
122
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
123
|
-
}, {
|
124
|
-
subfield: ['EKAD', '(2008)1-28, 32-53'],
|
125
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
126
|
-
}, {
|
127
|
-
subfield: ['EKAD', '(2009)1-34, 36-38'],
|
128
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
129
|
-
}, {
|
130
|
-
subfield: ['EKAD', '(2011)1-13, 15-36, 45-52'],
|
131
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
132
|
-
}, {
|
133
|
-
subfield: ['EKAD', 'KADOC elektronische tijdschriften'],
|
134
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
135
|
-
}, {
|
136
|
-
subfield: ['EKAD', 'KADOC lopende periodiek'],
|
137
|
-
:@tag => '983', :@ind1 => ' ', :@ind2 => ' '
|
138
|
-
}
|
139
|
-
],
|
140
|
-
}
|
141
|
-
}
|
142
|
-
|
143
9
|
context 'API service' do
|
144
10
|
let(:subject) { Libis::Services::Alma::WebService.new }
|
11
|
+
let(:record) { Hash.new }
|
145
12
|
|
146
13
|
context 'marc' do
|
147
14
|
|
148
15
|
before {
|
16
|
+
data = Libis::Services::Alma::SruService.new.search('alma.local_field_983', 'KYE000486')
|
17
|
+
data = data.first.to_hash(:convert_tags_to => lambda { |tag| tag.snakecase.to_sym })
|
18
|
+
|
19
|
+
record = data[:record]
|
149
20
|
record[:controlfield][0] = '9930800070101480'
|
150
21
|
record[:datafield].insert(1, {
|
151
22
|
subfield: '(EXLNZ-32KUL_LIBIS_NETWORK)9930800070101471',
|
@@ -170,9 +41,16 @@ describe 'Alma' do
|
|
170
41
|
|
171
42
|
context 'SRU service' do
|
172
43
|
let(:subject) { Libis::Services::Alma::SruService.new }
|
44
|
+
let(:record) { Hash.new }
|
173
45
|
|
174
46
|
context 'marc' do
|
175
47
|
|
48
|
+
before {
|
49
|
+
data = Libis::Services::Alma::WebService.new.get_marc('9930800070101480', 'l7xx8879c82a7d7b453a887a6e6dca8300fd').
|
50
|
+
to_hash(:convert_tags_to => lambda { |tag| tag.snakecase.to_sym })
|
51
|
+
record = data[:bib][:record]
|
52
|
+
record.cleanup!
|
53
|
+
}
|
176
54
|
|
177
55
|
it 'search' do
|
178
56
|
result = subject.search('alma.local_field_983', 'KYE000486')
|