61 lines
1.6 KiB
Ruby
61 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe Onebox::Engine::HackernewsOnebox do
|
|
context "when oneboxing a comment" do
|
|
let(:link) { "https://news.ycombinator.com/item?id=30181167" }
|
|
let(:api_link) { "https://hacker-news.firebaseio.com/v0/item/30181167.json" }
|
|
let(:html) { described_class.new(link).to_html }
|
|
|
|
before do
|
|
stub_request(:get, api_link).to_return(
|
|
status: 200,
|
|
body: onebox_response("hackernews_comment"),
|
|
)
|
|
end
|
|
|
|
it "has the comments first words" do
|
|
expect(html).to include(
|
|
"Completely, forums are about basic human expression in paragraph form.",
|
|
)
|
|
end
|
|
|
|
it "has author username" do
|
|
expect(html).to include("codinghorror")
|
|
end
|
|
|
|
it "has the permalink to the comic" do
|
|
expect(html).to include(link)
|
|
end
|
|
|
|
it "has the item date" do
|
|
expect(html).to include("2013")
|
|
end
|
|
end
|
|
|
|
context "when oneboxing a story" do
|
|
let(:link) { "https://news.ycombinator.com/item?id=5172905" }
|
|
let(:api_link) { "https://hacker-news.firebaseio.com/v0/item/5172905.json" }
|
|
let(:html) { described_class.new(link).to_html }
|
|
|
|
before do
|
|
stub_request(:get, api_link).to_return(status: 200, body: onebox_response("hackernews_story"))
|
|
end
|
|
|
|
it "has story title" do
|
|
expect(html).to include("Civilized Discourse Construction Kit")
|
|
end
|
|
|
|
it "has author username" do
|
|
expect(html).to include("sosuke")
|
|
end
|
|
|
|
it "has the permalink to the comic" do
|
|
expect(html).to include(link)
|
|
end
|
|
|
|
it "has the item date" do
|
|
expect(html).to include("2013")
|
|
end
|
|
end
|
|
end
|