Sha256: 0b0c3e4a5a0b1ea48a198c5ddd047d2ecc0072141d72ff6bd21aa1feb052ae21

Contents?: true

Size: 1.45 KB

Versions: 8

Compression:

Stored size: 1.45 KB

Contents

module ControllerSpecHelpers
  def sign_in_participant(participant = double("participant"))
    sign_in_resource(participant, "participant")
  end

  def sign_in_user(user = double("user"))
    sign_in_resource(user, "user")
  end

  private

  # rubocop:disable all
  def sign_in_resource(resource, name)
    if resource.nil?
      expect(request.env["warden"]).to receive(:authenticate!)
        .and_throw(:warden, scope: :"#{ name }")
      controller.stub :"current_#{ name }" => nil
    else
      expect(request.env["warden"]).to receive(:authenticate!) { resource }
      allow(controller).to receive("current_#{ name }") { resource }
    end
  end
  # rubocop:enable all
end

RSpec.configure do |config|
  config.include Devise::TestHelpers, type: :controller
  config.include ControllerSpecHelpers, type: :controller
end

# Shared examples

RSpec.shared_examples "a rejected user action" do
  it "should redirect to the user login" do
    expect(response).to redirect_to "/users/sign_in"
  end
end

RSpec.shared_examples "a rejected participant action" do
  it "should redirect to the participant login" do
    expect(response).to redirect_to "/participants/sign_in"
  end
end

RSpec.shared_examples "an untrusted action" do
  it "should redirect to root path" do
    expect(response.status)
      .to redirect_to root_path
  end

  it "should redirect to root path" do
    expect(flash[:alert])
      .to eq "Your authenticity token expired. Please try again."
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
think_feel_do_dashboard-1.1.19 spec/support/controller_spec_helpers.rb
think_feel_do_dashboard-1.1.18 spec/support/controller_spec_helpers.rb
think_feel_do_dashboard-1.1.17 spec/support/controller_spec_helpers.rb
think_feel_do_dashboard-1.1.16 spec/support/controller_spec_helpers.rb
think_feel_do_dashboard-1.1.15 spec/support/controller_spec_helpers.rb
think_feel_do_dashboard-1.1.14 spec/support/controller_spec_helpers.rb
think_feel_do_dashboard-1.1.13 spec/support/controller_spec_helpers.rb
think_feel_do_dashboard-1.1.12 spec/support/controller_spec_helpers.rb