diff --git a/.travis.yml b/.travis.yml index 963cab6..5ae7a6b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,7 @@ language: ruby rvm: - - 1.9.3 - - 2.0.0 - - 2.1.0 - - jruby-19mode # JRuby (1.9) + - 2.2.7 + - 2.3.3 + - 2.4.0 - rbx-2 install: "bundle install --retry=3" diff --git a/exlibris-primo.gemspec b/exlibris-primo.gemspec index b246d06..70db0f4 100644 --- a/exlibris-primo.gemspec +++ b/exlibris-primo.gemspec @@ -20,13 +20,14 @@ Gem::Specification.new do |s| s.add_dependency "require_all", "~> 1.3.1" # Leverage ActiveSupport core extensions. s.add_dependency "activesupport", ">= 3.2.14" - s.add_dependency "nokogiri", "~> 1.6.0" + s.add_dependency "nokogiri", "~> 1.6.8" s.add_dependency "json", "~> 1.8.0" - s.add_dependency "savon", "~> 2.8.0" + s.add_dependency "savon", "~> 2.11.1" s.add_dependency "iso-639", "~> 0.2.0" s.add_development_dependency "rake", "~> 10.1" s.add_development_dependency "vcr", "~> 2.9.0" s.add_development_dependency "webmock", "~> 1.20.0" s.add_development_dependency "pry", "~> 0.9.12.2" s.add_development_dependency 'minitest', '~> 4.7.5' + s.add_development_dependency 'test-unit' end diff --git a/lib/exlibris/primo/config.rb b/lib/exlibris/primo/config.rb index 009c2f5..7f8fc7a 100644 --- a/lib/exlibris/primo/config.rb +++ b/lib/exlibris/primo/config.rb @@ -7,7 +7,7 @@ module Primo module Config class << self include WriteAttributes - attr_accessor :base_url, :institution, :institutions, :libraries, :availability_statuses, :sources, + attr_accessor :base_url, :proxy_url, :institution, :institutions, :libraries, :availability_statuses, :sources, :facet_labels, :facet_top_level, :facet_collections, :facet_resource_types, :load_time def load_yaml file @@ -29,6 +29,10 @@ def base_url @base_url ||= String.new config.base_url.to_s end + def proxy_url + @proxy_url ||= config.proxy_url + end + def institution @institution ||= String.new config.institution.to_s end diff --git a/lib/exlibris/primo/holding.rb b/lib/exlibris/primo/holding.rb index becd0ec..4269da7 100644 --- a/lib/exlibris/primo/holding.rb +++ b/lib/exlibris/primo/holding.rb @@ -100,13 +100,14 @@ def to_source # Return the attribute accessible instance variables as a hash. def to_h - { :availlibrary => availlibrary, :record_id => record_id, :original_id => original_id, + { + :availlibrary => availlibrary, :record_id => record_id, :original_id => original_id, :title => title, :author => author, :display_type => display_type, :source_id => source_id, :original_source_id => original_source_id, :source_record_id => source_record_id, :ils_api_id => ils_api_id, :institution_code => institution_code, :library_code => library_code, :availability_status_code => availability_status_code, :collection => collection, :call_number => call_number, :coverage => coverage, :notes => notes, :subfields => subfields, - :source_id => source_id, :source_class => source_class, :source_data => source_data } + :source_class => source_class, :source_data => source_data } end end end diff --git a/lib/exlibris/primo/version.rb b/lib/exlibris/primo/version.rb index 39b13a5..f12a680 100644 --- a/lib/exlibris/primo/version.rb +++ b/lib/exlibris/primo/version.rb @@ -1,5 +1,5 @@ module Exlibris module Primo - VERSION = '1.1.9' + VERSION = '1.1.10' end end diff --git a/lib/exlibris/primo/web_service/client/base/savon_client.rb b/lib/exlibris/primo/web_service/client/base/savon_client.rb index 8a6bd78..a1e9870 100644 --- a/lib/exlibris/primo/web_service/client/base/savon_client.rb +++ b/lib/exlibris/primo/web_service/client/base/savon_client.rb @@ -11,9 +11,20 @@ def client # we don't want to make an extra HTTP call. # # @client ||= Savon.client(wsdl: wsdl) - @client ||= Savon.client(endpoint: endpoint, namespace: endpoint, log: false, log_level: :warn) + @client ||= Savon.client(client_options) end protected :client + + def client_options + { + proxy: proxy_url, + endpoint: endpoint, + namespace: endpoint, + log: false, + log_level: :warn + }.delete_if { |k, v| v.blank? } + end + private :client_options end end end diff --git a/test/config_test.rb b/test/config_test.rb index 811cba0..d2575d4 100644 --- a/test/config_test.rb +++ b/test/config_test.rb @@ -17,9 +17,10 @@ def test_config def test_config_from_yaml reset_primo_configuration - yaml_primo_configuration + yaml_primo_configuration(false) assert_equal "yaml_url", Exlibris::Primo::Config.base_url assert_equal "YAML_INSTITUTION", Exlibris::Primo::Config.institution + assert_equal "yaml_proxy_url", Exlibris::Primo::Config.proxy_url assert_nil(Exlibris::Primo::Config.institutions) assert_equal({ "LIB_CODE1" => "Library Decoded 1", "LIB_CODE2" => "Library Decoded 2", "LIB_CODE3" => "Library Decoded 3" }, Exlibris::Primo::Config.libraries) @@ -44,10 +45,12 @@ def test_config_from_yaml def test_config_attributes reset_primo_configuration - yaml_primo_configuration + yaml_primo_configuration(false) search = Exlibris::Primo::Search.new assert_equal "yaml_url", search.base_url assert_equal "YAML_INSTITUTION", search.institution + assert_equal "yaml_proxy_url", search + .proxy_url assert_equal({}, search.institutions) assert_equal({ "LIB_CODE1" => "Library Decoded 1", "LIB_CODE2" => "Library Decoded 2", "LIB_CODE3" => "Library Decoded 3" }, search.libraries) diff --git a/test/support/config.yml b/test/support/config.yml index 1720337..c9512ed 100644 --- a/test/support/config.yml +++ b/test/support/config.yml @@ -1,5 +1,6 @@ base_url: "yaml_url" institution: "YAML_INSTITUTION" +proxy_url: "yaml_proxy_url" libraries: "LIB_CODE1": "Library Decoded 1" "LIB_CODE2": "Library Decoded 2" diff --git a/test/test_helper.rb b/test/test_helper.rb index f53168d..45a489c 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -66,15 +66,17 @@ def assert_request(request, expected_root, *expected_args) end protected :assert_request - def yaml_primo_configuration + def yaml_primo_configuration(overide_proxy_url = true) Exlibris::Primo.configure do |config| config.load_yaml File.expand_path("../support/config.yml", __FILE__) + config.proxy_url = nil if overide_proxy_url end end def reset_primo_configuration Exlibris::Primo.configure do |config| config.base_url = nil + config.proxy_url = nil config.institution = nil config.institutions = nil config.libraries = nil