test/unit/searcher_test.rb in exlibris-primo-0.1.1 vs test/unit/searcher_test.rb in exlibris-primo-0.1.4

- old
+ new

@@ -1,32 +1,30 @@ # encoding: utf-8 require 'test_helper' -class SearcherTest < ActiveSupport::TestCase +class SearcherTest < Test::Unit::TestCase PNX_NS = {'pnx' => 'http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib'} SEARCH_NS = {'search' => 'http://www.exlibrisgroup.com/xsd/jaguar/search'} def setup @primo_definition = YAML.load( %{ - type: PrimoService - priority: 2 # After SFX, to get SFX metadata enhancement - status: active - base_url: http://bobcat.library.nyu.edu - vid: NYU - institution: NYU - holding_search_institution: NYU - holding_search_text: Search for this title in BobCat. - suppress_holdings: [ !ruby/regexp '/\$\$LBWEB/', !ruby/regexp '/\$\$LNWEB/', !ruby/regexp '/\$\$LTWEB/', !ruby/regexp '/\$\$LWEB/', !ruby/regexp '/\$\$1Restricted Internet Resources/' ] - ez_proxy: !ruby/regexp '/https\:\/\/ezproxy\.library\.nyu\.edu\/login\?url=/' - service_types: - - primo_source - - holding_search - - fulltext - - table_of_contents - - referent_enhance - - cover_image - }) - + type: PrimoService + priority: 2 # After SFX, to get SFX metadata enhancement + status: active + base_url: http://bobcat.library.nyu.edu + vid: NYU + institution: NYU + holding_search_institution: NYU + holding_search_text: Search for this title in BobCat. + suppress_holdings: [ !ruby/regexp '/\$\$LBWEB/', !ruby/regexp '/\$\$LNWEB/', !ruby/regexp '/\$\$LTWEB/', !ruby/regexp '/\$\$LWEB/', !ruby/regexp '/\$\$1Restricted Internet Resources/' ] + ez_proxy: !ruby/regexp '/https\:\/\/ezproxy\.library\.nyu\.edu\/login\?url=/' + service_types: + - primo_source + - holding_search + - fulltext + - table_of_contents + - referent_enhance + - cover_image }) @base_url = @primo_definition["base_url"] @vid = @primo_definition["vid"] @institution = @primo_definition["institution"] @primo_holdings_doc_id = "nyu_aleph000062856" @primo_rsrcs_doc_id = "nyu_aleph002895625" @@ -50,310 +48,335 @@ :base_url => @base_url, :institution => @institution, :vid => @vid, :config => @primo_definition } - @searcher_setup_without_config = { :base_url => @base_url, :institution => @institution, :vid => @vid } end # Test search for a single Primo document. - test "search_by_doc_id" do - searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:primo_id => @primo_holdings_doc_id}) - assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") - search_results = searcher.response - assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") - assert_equal(@primo_holdings_doc_id, search_results.at("//pnx:control/pnx:recordid", PNX_NS).inner_text, "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") - assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for doc id: #{@primo_holdings_doc_id}.") + def testsearch_by_doc_id + VCR.use_cassette('searcher holdings by id') do + searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:primo_id => @primo_holdings_doc_id}) + assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") + search_results = searcher.response + assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") + assert_equal(@primo_holdings_doc_id, search_results.at("//pnx:control/pnx:recordid", PNX_NS).inner_text, "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") + assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for doc id: #{@primo_holdings_doc_id}.") + end end # Test search for a Primo problem record - test "search_by_genre_discrepancy" do - searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:primo_id => @primo_test_problem_doc_id}) - assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") - search_results = searcher.response - assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") - assert_equal(@primo_test_problem_doc_id, search_results.at("//pnx:control/pnx:recordid", PNX_NS).inner_text, "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") - assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for doc id: #{@primo_test_problem_doc_id}.") - assert_equal(1, searcher.holdings.length, "#{searcher.class} returned unexpected holdings") + def testsearch_by_genre_discrepancy + VCR.use_cassette('searcher test problem by id') do + searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:primo_id => @primo_test_problem_doc_id}) + assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") + search_results = searcher.response + assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") + assert_equal(@primo_test_problem_doc_id, search_results.at("//pnx:control/pnx:recordid", PNX_NS).inner_text, "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") + assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for doc id: #{@primo_test_problem_doc_id}.") + assert_equal(1, searcher.holdings.length, "#{searcher.class} returned unexpected holdings") + end end - test "search_by_bug1361" do - searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:primo_id => @primo_test_bug1361_id}) - assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") - search_results = searcher.response - assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") - assert_equal(@primo_test_bug1361_id, search_results.at("//pnx:control/pnx:recordid", PNX_NS).inner_text, "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") - assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for doc id: #{@primo_test_bug1361_id}.") - assert_equal(0, searcher.holdings.length, "#{searcher.class} returned unexpected holdings") - assert_equal(4, searcher.rsrcs.length, "#{searcher.class} returned unexpected rsrcs") + def testsearch_by_bug1361 + VCR.use_cassette('searcher test bug 1361') do + searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:primo_id => @primo_test_bug1361_id}) + assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") + search_results = searcher.response + assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") + assert_equal(@primo_test_bug1361_id, search_results.at("//pnx:control/pnx:recordid", PNX_NS).inner_text, "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") + assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for doc id: #{@primo_test_bug1361_id}.") + assert_equal(0, searcher.holdings.length, "#{searcher.class} returned unexpected holdings") + assert_equal(4, searcher.rsrcs.length, "#{searcher.class} returned unexpected rsrcs") + end end # Test search for an invalid Primo document. - test "search_by_invalid_doc_id" do - assert_raise(RuntimeError) { - searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:primo_id => @primo_invalid_doc_id}) - } + def testsearch_by_invalid_doc_id + VCR.use_cassette('searcher invalid id') do + assert_raise(RuntimeError) { + searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:primo_id => @primo_invalid_doc_id}) + } + end end # Test invalid setup. - test "search_by_invalid_setup1" do + def testsearch_by_invalid_setup1 assert_raise(RuntimeError) { searcher = Exlibris::Primo::Searcher.new({}, {:primo_id => @primo_invalid_doc_id}) } end # Test invalid setup. - test "search_by_invalid_setup2" do + def testsearch_by_invalid_setup2 assert_raise(RuntimeError) { searcher = Exlibris::Primo::Searcher.new({:base_url => @base_url, :config => nil}, {:primo_id => @primo_invalid_doc_id}) } end # Test base setup search for a single Primo document. - test "search_base_setup_record_id" do - searcher = Exlibris::Primo::Searcher.new({:base_url => @base_url, :institution => @institution}, {:primo_id => @primo_holdings_doc_id}) - holdings = searcher.holdings - assert_instance_of(Array, holdings, "#{searcher.class} holdings is an unexpected object: #{holdings.class}") - assert(holdings.count > 0, "#{searcher.class} returned 0 holdings for doc id: #{@primo_holdings_doc_id}.") - first_holding = holdings.first - assert_instance_of(Exlibris::Primo::Holding, first_holding, "#{searcher.class} first holding is an unexpected object: #{first_holding.class}") - assert_equal("check_holdings", first_holding.status, "#{searcher.class} first holding has an unexpected status: #{first_holding.status}") - assert_equal("NYU", first_holding.institution, "#{searcher.class} first holding has an unexpected institution: #{first_holding.institution}") - assert_equal("BOBST", first_holding.library, "#{searcher.class} first holding has an unexpected library: #{first_holding.library}") - assert_equal("Main Collection", first_holding.collection, "#{searcher.class} first holding has an unexpected collection: #{first_holding.collection}") - assert_equal("(PR6013.R44 T7 2004 )", first_holding.call_number, "#{searcher.class} first holding has an unexpected call number: #{first_holding.call_number}") + def testsearch_base_setup_record_id + VCR.use_cassette('searcher base holdings by id') do + searcher = Exlibris::Primo::Searcher.new({:base_url => @base_url, :institution => @institution}, {:primo_id => @primo_holdings_doc_id}) + holdings = searcher.holdings + assert_instance_of(Array, holdings, "#{searcher.class} holdings is an unexpected object: #{holdings.class}") + assert(holdings.count > 0, "#{searcher.class} returned 0 holdings for doc id: #{@primo_holdings_doc_id}.") + first_holding = holdings.first + assert_instance_of(Exlibris::Primo::Holding, first_holding, "#{searcher.class} first holding is an unexpected object: #{first_holding.class}") + assert_equal("check_holdings", first_holding.status, "#{searcher.class} first holding has an unexpected status: #{first_holding.status}") + assert_equal("NYU", first_holding.institution, "#{searcher.class} first holding has an unexpected institution: #{first_holding.institution}") + assert_equal("BOBST", first_holding.library, "#{searcher.class} first holding has an unexpected library: #{first_holding.library}") + assert_equal("Main Collection", first_holding.collection, "#{searcher.class} first holding has an unexpected collection: #{first_holding.collection}") + assert_equal("(PR6013.R44 T7 2004 )", first_holding.call_number, "#{searcher.class} first holding has an unexpected call number: #{first_holding.call_number}") + end end # Test search by isbn. - test "search_by_isbn" do - searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:isbn => @primo_test_isbn}) - assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") - search_results = searcher.response - assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") - search_results.search("//search/isbn") do |isbn| - assert_not_nil(isbn.inner_text.match(@primo_test_isbn), "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") + def testsearch_by_isbn + VCR.use_cassette('searcher search by isbn') do + searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:isbn => @primo_test_isbn}) + assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") + search_results = searcher.response + assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") + search_results.search("//search/isbn") do |isbn| + assert_not_nil(isbn.inner_text.match(@primo_test_isbn), "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") + end + assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for ISBN: #{@primo_test_isbn}.") end - assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for ISBN: #{@primo_test_isbn}.") end # Test search by isbn. - test "search_by_issn" do - searcher = Exlibris::Primo::Searcher.new(@searcher_setup_without_config, {:issn => "0002-8614"}) - assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") - search_results = searcher.response - assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") - search_results.search("//search/issn") do |isbn| - assert_not_nil(isbn.inner_text.match("0002-8614"), "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") + def testsearch_by_issn + VCR.use_cassette('searcher search by issn') do + searcher = Exlibris::Primo::Searcher.new(@searcher_setup_without_config, {:issn => "0002-8614"}) + assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") + search_results = searcher.response + assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") + search_results.search("//search/issn") do |isbn| + assert_not_nil(isbn.inner_text.match("0002-8614"), "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") + end + assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for ISSN: 0002-8614.") end - assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for ISSN: 0002-8614.") end # Test search by title/author/genre. - test "search_by_title_author_genre" do - searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:title => @primo_test_title, :author => @primo_test_author, :genre => @primo_test_genre}) - assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") - search_results = searcher.response - assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") - search_results.search("//search/title") do |title| - assert_not_nil(title.inner_text.downcase.match(@primo_test_title.downcase), "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") + def testsearch_by_title_author_genre + VCR.use_cassette('searcher search by title author genre') do + searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:title => @primo_test_title, :author => @primo_test_author, :genre => @primo_test_genre}) + assert_not_nil(searcher, "#{searcher.class} returned nil when instantiated.") + search_results = searcher.response + assert_instance_of(Nokogiri::XML::Document, search_results, "#{searcher.class} search result is an unexpected object: #{search_results.class}") + search_results.search("//search/title") do |title| + assert_not_nil(title.inner_text.downcase.match(@primo_test_title.downcase), "#{searcher.class} returned an unexpected record: #{search_results.to_xml(:indent => 5, :encoding => 'UTF-8')}") + end + assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for Title: #{@primo_test_title}.") end - assert(searcher.count.to_i > 0, "#{searcher.class} returned 0 results for Title: #{@primo_test_title}.") end # Test search for a single Primo document w/ holdings. - test "holdings" do - searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:primo_id => @primo_holdings_doc_id}) - holdings = searcher.holdings - assert_instance_of(Array, holdings, - "#{searcher.class} holdings is an unexpected object: #{holdings.class}") - assert_equal(1, holdings.count, - "#{searcher.class} returned 0 holdings for doc id: #{@primo_holdings_doc_id}.") - first_holding = holdings.first - assert_instance_of( - Exlibris::Primo::Holding, - first_holding, - "#{searcher.class} first holding is an unexpected object: #{first_holding.class}") - test_data = { - :record_id => "nyu_aleph000062856", - :title => "Travels with my aunt", - :author => "Graham Greene 1904-1991.", - :source_id => "nyu_aleph", - :original_source_id => "NYU01", - :source_record_id => "000062856", - :institution_code => "NYU", - :institution => "NYU", - :library_code => "BOBST", - :library => "BOBST", - :status_code => "check_holdings", - :status => "check_holdings", - :id_one => "Main Collection", - :id_two => "(PR6013.R44 T7 2004 )", - :collection => "Main Collection", - :call_number => "(PR6013.R44 T7 2004 )", - :origin => nil, - :display_type => "book", - :coverage => [], - :notes => "", - :url => "#{@base_url}/primo_library/libweb/action/dlDisplay.do?docId=nyu_aleph000062856&institution=NYU&vid=#{@vid}", - :request_url => nil } - test_data.each { |key, value| - assert_equal( - value, - first_holding.send(key), - "#{searcher.class} first holding has an unexpected #{key}: #{first_holding.send(key)}") - } + def testholdings + VCR.use_cassette('searcher holdings by id') do + searcher = Exlibris::Primo::Searcher.new(@searcher_setup, {:primo_id => @primo_holdings_doc_id}) + holdings = searcher.holdings + assert_instance_of(Array, holdings, + "#{searcher.class} holdings is an unexpected object: #{holdings.class}") + assert_equal(1, holdings.count, + "#{searcher.class} returned 0 holdings for doc id: #{@primo_holdings_doc_id}.") + first_holding = holdings.first + assert_instance_of( + Exlibris::Primo::Holding, + first_holding, + "#{searcher.class} first holding is an unexpected object: #{first_holding.class}") + test_data = { + :record_id => "nyu_aleph000062856", + :title => "Travels with my aunt", + :author => "Graham Greene 1904-1991.", + :source_id => "nyu_aleph", + :original_source_id => "NYU01", + :source_record_id => "000062856", + :institution_code => "NYU", + :institution => "NYU", + :library_code => "BOBST", + :library => "BOBST", + :status_code => "check_holdings", + :status => "check_holdings", + :id_one => "Main Collection", + :id_two => "(PR6013.R44 T7 2004 )", + :collection => "Main Collection", + :call_number => "(PR6013.R44 T7 2004 )", + :origin => nil, + :display_type => "book", + :coverage => [], + :notes => "", + :url => "#{@base_url}/primo_library/libweb/action/dlDisplay.do?docId=nyu_aleph000062856&institution=NYU&vid=#{@vid}", + :request_url => nil } + test_data.each { |key, value| + assert_equal( + value, + first_holding.send(key), + "#{searcher.class} first holding has an unexpected #{key}: #{first_holding.send(key)}") + } + end end # Test search for a single Primo document w/ rsrcs. - test "rsrcs" do - searcher = Exlibris::Primo::Searcher.new( - @searcher_setup, - { :primo_id => @primo_rsrcs_doc_id }) - rsrcs = searcher.rsrcs - assert_instance_of(Array, rsrcs, - "#{searcher.class} rsrcs is an unexpected object: #{rsrcs.class}") - assert_equal(2, rsrcs.count, - "#{searcher.class} returned an unexpected amount of rsrcs (#{rsrcs.count}) for doc id: #{@primo_rsrcs_doc_id}.") - first_rsrc = rsrcs.first - assert_instance_of( - Exlibris::Primo::Rsrc, - first_rsrc, - "#{searcher.class} first rsrc is an unexpected object: #{first_rsrc.class}") - test_data = { - :record_id => "nyu_aleph002895625", - :v => nil, - :url => "https://ezproxy.library.nyu.edu/login?url=http://mq.oxfordjournals.org/", - :display => "Online Version", - :institution_code => "NYU", - :origin => nil, - :notes => "" } - test_data.each { |key, value| - assert_equal( - value, - first_rsrc.send(key), - "#{searcher.class} first rsrc has an unexpected #{key}: #{first_rsrc.send(key)}") - } + def testrsrcs + VCR.use_cassette('searcher rsrcs by id') do + searcher = Exlibris::Primo::Searcher.new( + @searcher_setup, + { :primo_id => @primo_rsrcs_doc_id }) + rsrcs = searcher.rsrcs + assert_instance_of(Array, rsrcs, + "#{searcher.class} rsrcs is an unexpected object: #{rsrcs.class}") + assert_equal(2, rsrcs.count, + "#{searcher.class} returned an unexpected amount of rsrcs (#{rsrcs.count}) for doc id: #{@primo_rsrcs_doc_id}.") + first_rsrc = rsrcs.first + assert_instance_of( + Exlibris::Primo::Rsrc, + first_rsrc, + "#{searcher.class} first rsrc is an unexpected object: #{first_rsrc.class}") + test_data = { + :record_id => "nyu_aleph002895625", + :v => nil, + :url => "https://ezproxy.library.nyu.edu/login?url=http://mq.oxfordjournals.org/", + :display => "Online Version", + :institution_code => "NYU", + :origin => nil, + :notes => "" } + test_data.each { |key, value| + assert_equal( + value, + first_rsrc.send(key), + "#{searcher.class} first rsrc has an unexpected #{key}: #{first_rsrc.send(key)}") + } + end end # Test search for a single Primo document w/ tocs. - test "tocs" do - searcher = Exlibris::Primo::Searcher.new( - @searcher_setup, - { :primo_id => @primo_tocs_doc_id }) - tocs = searcher.tocs - assert_instance_of(Array, tocs, - "#{searcher.class} tocs is an unexpected object: #{tocs.class}") - assert_equal(1, tocs.count, - "#{searcher.class} returned an unexpected amount of tocs (#{tocs.count}) for doc id: #{@primo_tocs_doc_id}.") - first_toc = tocs.last - assert_instance_of( - Exlibris::Primo::Toc, - first_toc, - "#{searcher.class} first toc is an unexpected object: #{first_toc.class}") - test_data = { - :record_id => "nyu_aleph003149772", - :url => "http://www.loc.gov/catdir/toc/onix07/2001024342.html", - :display => "Table of Contents", - :notes => "" } - test_data.each { |key, value| - assert_equal( - value, - first_toc.send(key), - "#{searcher.class} first toc has an unexpected #{key}: #{first_toc.send(key)}") - } + def testtocs + VCR.use_cassette('searcher tocs by id') do + searcher = Exlibris::Primo::Searcher.new( + @searcher_setup, + { :primo_id => @primo_tocs_doc_id }) + tocs = searcher.tocs + assert_instance_of(Array, tocs, + "#{searcher.class} tocs is an unexpected object: #{tocs.class}") + assert_equal(1, tocs.count, + "#{searcher.class} returned an unexpected amount of tocs (#{tocs.count}) for doc id: #{@primo_tocs_doc_id}.") + first_toc = tocs.last + assert_instance_of( + Exlibris::Primo::Toc, + first_toc, + "#{searcher.class} first toc is an unexpected object: #{first_toc.class}") + test_data = { + :record_id => "nyu_aleph003149772", + :url => "http://www.loc.gov/catdir/toc/onix07/2001024342.html", + :display => "Table of Contents", + :notes => "" } + test_data.each { |key, value| + assert_equal( + value, + first_toc.send(key), + "#{searcher.class} first toc has an unexpected #{key}: #{first_toc.send(key)}") + } + end end - test "dedupmrg" do - searcher = Exlibris::Primo::Searcher.new( - @searcher_setup, - { :primo_id => @primo_dedupmrg_doc_id }) - holdings = searcher.holdings - assert_instance_of(Array, holdings, - "#{searcher.class} holdings is an unexpected object: #{holdings.class}") - assert_equal(6, holdings.count, - "#{searcher.class} returned 0 holdings for doc id: #{@primo_dedupmrg_doc_id}.") - first_holding = holdings.first - assert_instance_of( - Exlibris::Primo::Holding, - first_holding, - "#{searcher.class} first holding is an unexpected object: #{first_holding.class}") - test_data = { - :record_id => "dedupmrg17343091", - :title => "The New York times", - :author => "", - :source_id => "nyu_aleph", - :original_source_id => "NYU01", - :source_record_id => "000932393", - :institution_code => "NYU", - :institution => "NYU", - :library_code => "BWEB", - :library => "BWEB", - :status_code => "check_holdings", - :status => "check_holdings", - :id_one => "Internet Resources", - :id_two => "(Newspaper Electronic access )", - :collection => "Internet Resources", - :call_number => "(Newspaper Electronic access )", - :origin => "nyu_aleph000932393", - :display_type => "journal", - :coverage => [], - :notes => "", - :url => "#{@base_url}/primo_library/libweb/action/dlDisplay.do?docId=dedupmrg17343091&institution=NYU&vid=#{@vid}", - :request_url => nil } - test_data.each { |key, value| + def testdedupmrg + VCR.use_cassette('searcher dedupmrg by id') do + searcher = Exlibris::Primo::Searcher.new( + @searcher_setup, + { :primo_id => @primo_dedupmrg_doc_id }) + holdings = searcher.holdings + assert_instance_of(Array, holdings, + "#{searcher.class} holdings is an unexpected object: #{holdings.class}") + assert_equal(7, holdings.count, + "#{searcher.class} returned 0 holdings for doc id: #{@primo_dedupmrg_doc_id}.") + first_holding = holdings.first + assert_instance_of( + Exlibris::Primo::Holding, + first_holding, + "#{searcher.class} first holding is an unexpected object: #{first_holding.class}") + test_data = { + :record_id => "dedupmrg17343091", + :title => "The New York times", + :author => "", + :source_id => "nyu_aleph", + :original_source_id => "NYU01", + :source_record_id => "000932393", + :institution_code => "NYU", + :institution => "NYU", + :library_code => "BWEB", + :library => "BWEB", + :status_code => "check_holdings", + :status => "check_holdings", + :id_one => "Internet Resources", + :id_two => "(Newspaper Electronic access )", + :collection => "Internet Resources", + :call_number => "(Newspaper Electronic access )", + :origin => "nyu_aleph000932393", + :display_type => "journal", + :coverage => [], + :notes => "", + :url => "#{@base_url}/primo_library/libweb/action/dlDisplay.do?docId=dedupmrg17343091&institution=NYU&vid=#{@vid}", + :request_url => nil } + test_data.each { |key, value| + assert_equal( + value, + first_holding.send(key), + "#{searcher.class} first holding has an unexpected #{key}: #{first_holding.send(key)}") + } + rsrcs = searcher.rsrcs + assert_instance_of(Array, rsrcs, + "#{searcher.class} rsrcs is an unexpected object: #{rsrcs.class}") + assert_equal(8, rsrcs.count, + "#{searcher.class} returned an unexpected amount of rsrcs (#{rsrcs.count}) for doc id: #{@primo_rsrcs_doc_id}.") + first_rsrc = rsrcs.first + assert_instance_of( + Exlibris::Primo::Rsrc, + first_rsrc, + "#{searcher.class} first rsrc is an unexpected object: #{first_rsrc.class}") + test_data = { + :record_id => "dedupmrg17343091", + :v => "", + :url => "https://ezproxy.library.nyu.edu/login?url=http://proquest.umi.com/pqdweb?RQT=318&VName=PQD&clientid=9269&pmid=7818", + :display => "1995 - Current Access via Proquest", + :institution_code => "NYU", + :origin => "nyu_aleph000932393", + :notes => "" } + test_data.each { |key, value| + assert_equal( + value, + first_rsrc.send(key), + "#{searcher.class} first rsrc has an unexpected #{key}: #{first_rsrc.send(key)}") + } + end + end + + def testholdings_diacritics1 + VCR.use_cassette('searcher diacritics1 by id') do + searcher = Exlibris::Primo::Searcher.new( + @searcher_setup, + { :primo_id => @primo_test_diacritics1_doc_id }) assert_equal( - value, - first_holding.send(key), - "#{searcher.class} first holding has an unexpected #{key}: #{first_holding.send(key)}") - } - rsrcs = searcher.rsrcs - assert_instance_of(Array, rsrcs, - "#{searcher.class} rsrcs is an unexpected object: #{rsrcs.class}") - assert_equal(8, rsrcs.count, - "#{searcher.class} returned an unexpected amount of rsrcs (#{rsrcs.count}) for doc id: #{@primo_rsrcs_doc_id}.") - first_rsrc = rsrcs.first - assert_instance_of( - Exlibris::Primo::Rsrc, - first_rsrc, - "#{searcher.class} first rsrc is an unexpected object: #{first_rsrc.class}") - test_data = { - :record_id => "dedupmrg17343091", - :v => "", - :url => "https://ezproxy.library.nyu.edu/login?url=http://proquest.umi.com/pqdweb?RQT=318&VName=PQD&clientid=9269&pmid=7818", - :display => "1995 - Current Access via Proquest", - :institution_code => "NYU", - :origin => "nyu_aleph000932393", - :notes => "" } - test_data.each { |key, value| + "Rubāʻīyāt-i Bābā Ṭāhir", + searcher.btitle, + "#{searcher.class} has an unexpected btitle: #{searcher.btitle}") assert_equal( - value, - first_rsrc.send(key), - "#{searcher.class} first rsrc has an unexpected #{key}: #{first_rsrc.send(key)}") - } + "Bābā-Ṭāhir, 11th cent", + searcher.au, + "#{searcher.class} has an unexpected author: #{searcher.au}") + end end - - test "holdings_diacritics1" do - searcher = Exlibris::Primo::Searcher.new( - @searcher_setup, - { :primo_id => @primo_test_diacritics1_doc_id }) - assert_equal( - "Rubāʻīyāt-i Bābā Ṭāhir", - searcher.btitle, - "#{searcher.class} has an unexpected btitle: #{searcher.btitle}") - assert_equal( - "Bābā-Ṭāhir, 11th cent", - searcher.au, - "#{searcher.class} has an unexpected author: #{searcher.au}") - end # This test fails but I don't know why! - # test "holdings_diacritics2" do + # def testholdings_diacritics2 # searcher = Exlibris::Primo::Searcher.new( # @searcher_setup, # { :primo_id => @primo_test_diacritics2_doc_id }) # assert_equal( # "Faraj, Faraj Maḥmūd", @@ -363,19 +386,21 @@ # "Iqlīm Tuwāt khilāl al-qarnayn al-thāmin ʻashar wa-al-tāsiʻ ʻashar al-mīlādīyīn : dirāsah li-awḍāʻ al-iqlīm al-siyāsīyah wa-al-ijtimāʻīyah wa-al-iqtiṣādīyah wa-al-thaqāfīyah, maʻa taḥqīq kitāb al-Qawl al-basīṭ fī akhbār Tamanṭīṭ (li-Muḥammad ibn Bābā Ḥaydah)", # searcher.btitle, # "#{searcher.class} has an unexpected btitle: #{searcher.btitle}") # end - test "holdings_diacritics3" do - searcher = Exlibris::Primo::Searcher.new( - @searcher_setup, - { :primo_id => @primo_test_diacritics3_doc_id }) - assert_equal( - "Mul har ha-gaʻash : ḥoḳre toldot Yiśraʼel le-nokhaḥ ha-Shoʼah", - searcher.btitle, - "#{searcher.class} has an unexpected btitle: #{searcher.btitle}") - assert_equal( - "Engel, David", - searcher.au, - "#{searcher.class} has an unexpected author: #{searcher.au}") + def testholdings_diacritics3 + VCR.use_cassette('searcher diacritics2 by id') do + searcher = Exlibris::Primo::Searcher.new( + @searcher_setup, + { :primo_id => @primo_test_diacritics3_doc_id }) + assert_equal( + "Mul har ha-gaʻash : ḥoḳre toldot Yiśraʼel le-nokhaḥ ha-Shoʼah", + searcher.btitle, + "#{searcher.class} has an unexpected btitle: #{searcher.btitle}") + assert_equal( + "Engel, David", + searcher.au, + "#{searcher.class} has an unexpected author: #{searcher.au}") + end end end \ No newline at end of file