Sha256: 93e1f310493b9b979e4cec97eec56643ebe8d83baa45755374d64391829e64a8

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

require "spec_helpers"

describe Wayfarer::Middleware::Router do
  let(:task) { build(:task, url: url) }
  let(:klass) do
    Class.new(Wayfarer::Base) do
      route.to :index, host: "example.com", path: "/foobar"
    end
  end

  subject(:router) { Wayfarer::Middleware::Router.new }

  before { task.job = klass.new }

  describe "#call" do
    context "when URL matches a route" do
      let(:url) { "https://example.com/foobar" }

      it "yields" do
        expect { |spy| router.call(task, &spy) }.to yield_control
      end

      it "assigns metadata" do
        router.call(task)
        expect(task.metadata.action).to be(:index)
        expect(task.metadata.params).to eq({})
      end

      describe "params" do
        it "is a HashWithIndifferentAccess" do
          router.call(task)
          expect(task.metadata.params).to be_a(ActiveSupport::HashWithIndifferentAccess)
        end
      end
    end

    context "when URL does not match a route" do
      let(:url) { "https://yahoo.com/foobar" }

      it "does not yield" do
        expect { |spy| router.call(task, &spy) }.not_to yield_control
      end

      it "does not assign metadata" do
        router.call(task) {}
        expect(task.metadata.action).to be(nil)
        expect(task.metadata.params).to be(nil)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wayfarer-0.4.1 spec/middleware/router_spec.rb