require 'test_helper' class JournalTocsAdapterTest < ActiveSupport::TestCase extend TestWithCassette before do @service_config = { "type" => "JournalTocsAdapter", "priority" => 1 } @service_config_list = {'default' => { "services" => { "journal_tocs" => @service_config } } } @service = JournalTocsAdapter.new(@service_config.merge("service_id" => "journal_tocs")) end describe "with no ISSN" do test "does nothing" do umlaut_request = fake_umlaut_request("/resolve?jtitle=Journal+Of+Something&genre=journal") @service.handle(umlaut_request) assert_dispatched umlaut_request, "journal_tocs" assert_service_responses umlaut_request, 'journal_tocs', :number => 0 end end describe "article-level citation" do test "does nothing" do @umlaut_request = fake_umlaut_request("/resolve?jtitle=JAMA&genre=article&issn=1538-3598&volume=1&issue=1&spage=1") @service.handle(@umlaut_request) assert_dispatched @umlaut_request, "journal_tocs" response = assert_service_responses @umlaut_request, 'journal_tocs', :number => 0 end end describe "with ISSN that works" do before do @umlaut_request = fake_umlaut_request("/resolve?au=JAMA&genre=journal&issn=1538-3598") end test_with_cassette "generates response" do @service.handle(@umlaut_request) assert_dispatched @umlaut_request, "journal_tocs" response = assert_service_responses @umlaut_request, 'journal_tocs', :number => 1 # Can we de-serialize? bento_results = BentoSearch::Results.load_json(response.service_data) assert_kind_of BentoSearch::Results, bento_results assert bento_results.count > 0 bento_results.each do |result| assert_kind_of BentoSearch::ResultItem, result end end end describe "with ISSN with no JournalTocs results" do before do @umlaut_request = fake_umlaut_request("/resolve?au=JAMA&genre=journal&issn=12345678") end test_with_cassette("generates no response") do @service.handle(@umlaut_request) assert_dispatched @umlaut_request, "journal_tocs" assert_service_responses @umlaut_request, 'journal_tocs', :number => 0 end end describe "with bad email" do before do config = @service_config.merge("service_id" => "journal_tocs", "bento_search_engine" => "bad_email_journal_tocs") @service = JournalTocsAdapter.new(config) @umlaut_request = fake_umlaut_request("/resolve?au=JAMA&genre=journal&issn=12345678") end test_with_cassette "registers proper error" do @service.handle(@umlaut_request) assert_dispatched @umlaut_request, "journal_tocs", "failed_temporary" assert_service_responses @umlaut_request, 'journal_tocs', :number => 0 end end end