2022-02-04 00:39:21 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2022-07-28 10:27:38 +08:00
|
|
|
RSpec.describe Onebox::Engine::HackernewsOnebox do
|
2022-07-28 00:14:14 +08:00
|
|
|
context "when oneboxing a comment" do
|
2022-02-04 00:39:21 +08:00
|
|
|
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
|
|
|
|
|
2022-07-28 00:14:14 +08:00
|
|
|
context "when oneboxing a story" do
|
2022-02-04 00:39:21 +08:00
|
|
|
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
|