# frozen_string_literal: true require "spec_helpers" describe "Pages" do let(:url) { test_app_path("git-scm.com/book/en/v2.html") } before do stub_const("DummyJob", Class.new(ActiveJob::Base).include(Wayfarer::Base)) stub_const("DummyHandler", Class.new.include(Wayfarer::Handler)) end shared_examples "executes" do specify do DummyJob.crawl(url) perform_enqueued_jobs assert_performed_jobs 1 expect(enqueued_jobs).to be_empty end end describe "page content" do before do DummyJob.class_eval do include RSpec::Matchers extend SpecHelpers include SpecHelpers route.host test_app_host, to: :index def index expect(page.url).to eq(test_app_path("git-scm.com/book/en/v2.html")) expect(page.status_code).to be(200) expect(page.body).not_to be_empty expect(page.headers.count).to be(9) expect(page.meta.links.all.count).to be(157) expect(page.meta.links.internal.count).to be(102) expect(page.meta.links.external.count).to be(55) end end end it_behaves_like "executes" end describe "page content with handler" do before do DummyJob.class_eval do include RSpec::Matchers include SpecHelpers route.to :index def index expect(page.url).to eq(test_app_path("git-scm.com/book/en/v2.html")) expect(page.status_code).to be(200) expect(page.body).not_to be_empty expect(page.headers.count).to be(9) expect(page.meta.links.all.count).to be(157) expect(page.meta.links.internal.count).to be(102) expect(page.meta.links.external.count).to be(55) end end DummyHandler.class_eval do extend SpecHelpers include SpecHelpers route.host test_app_host, to: DummyHandler end end it_behaves_like "executes" end end