# 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