discourse/spec/lib/onebox/engine/pubmed_onebox_spec.rb

83 lines
2.4 KiB
Ruby

# frozen_string_literal: true
RSpec.describe Onebox::Engine::PubmedOnebox do
let(:link) { "http://www.ncbi.nlm.nih.gov/pubmed/7288891" }
let(:xml_link) { "http://www.ncbi.nlm.nih.gov/pubmed/7288891?report=xml&format=text" }
let(:html) { described_class.new(link).to_html }
before do
stub_request(:get, link).to_return(status: 200, body: onebox_response("pubmed"))
stub_request(:get, xml_link).to_return(status: 200, body: onebox_response("pubmed-xml"))
end
it "has the paper's title" do
expect(html).to include("Evolutionary trees from DNA sequences: a maximum likelihood approach.")
end
it "has the paper's author" do
expect(html).to include("Felsenstein")
end
it "has the paper's abstract" do
expect(html).to include(
"The application of maximum likelihood techniques to the estimation of evolutionary trees from nucleic acid sequence data is discussed.",
)
end
it "has the paper's date" do
expect(html).to include("1981")
end
it "has the URL to the resource" do
expect(html).to include(link)
end
describe "Pubmed electronic print" do
let(:link) { "http://www.ncbi.nlm.nih.gov/pubmed/24737116" }
let(:xml_link) { "http://www.ncbi.nlm.nih.gov/pubmed/24737116?report=xml&format=text" }
let(:html) { described_class.new(link).to_html }
before do
stub_request(:get, link).to_return(status: 200, body: onebox_response("pubmed-electronic"))
stub_request(:get, xml_link).to_return(
status: 200,
body: onebox_response("pubmed-electronic-xml"),
)
end
it "has the paper's title" do
expect(html).to include("Cushingoid facies on (18)F-FDG PET/CT.")
end
it "has the paper's author" do
expect(html).to include("van Rheenen")
end
it "has the paper's date" do
expect(html).to include("Jul 2014")
end
it "has the URL to the resource" do
expect(html).to include(link)
end
end
describe "regex URI match" do
it "matches on specific articles" do
expect(match("http://www.ncbi.nlm.nih.gov/pubmed/7288891")).to eq true
end
it "does not match on search" do
expect(match("http://www.ncbi.nlm.nih.gov/pubmed/?term=rheenen+r")).to eq false
end
it "does not match on the root" do
expect(match("http://www.ncbi.nlm.nih.gov/pubmed/")).to eq false
end
def match(url)
Onebox::Engine::PubmedOnebox === URI(url)
end
end
end