Sha256: 5321d66fc1566a455f5f5feee27f6f6d0e43bd24065fa15cccc798ea1f6ffb7e

Contents?: true

Size: 1.69 KB

Versions: 1

Compression:

Stored size: 1.69 KB

Contents

require 'spec_helper'
require 'switch_user/user_loader'

RSpec.describe SwitchUser::UserLoader do
  let(:user) { double(:user) }
  let(:user_result) { [user] }

  it "raises an exception if we are passed an invalid scope" do
    expect { SwitchUser::UserLoader.new("useeer", 1) }.to raise_error(SwitchUser::InvalidScope)
  end

  describe ".user" do
    before do
      SwitchUser.available_users_identifiers = { user: :id }
      allow(User).to receive(:where).with(id: "1").and_return(user_result)
    end
    it "can be loaded from a scope and identifier" do
      loaded_user = SwitchUser::UserLoader.prepare("user", "1").user

      expect(loaded_user).to eq user
    end
    it "can be loaded by a passing an unprocessed scope identifier" do
      loaded_user = SwitchUser::UserLoader.prepare(scope_identifier: "user_1").user

      expect(loaded_user).to eq user
    end
    it "raises an error for an invalid scope" do
      expect {
        loaded_user = SwitchUser::UserLoader.prepare(nil, "1")
      }.to raise_error(SwitchUser::InvalidScope)
    end
  end

  it "returns a user" do
    allow(User).to receive(:where).with(id: 1).and_return(user_result)

    loader = SwitchUser::UserLoader.new("user", 1)

    expect(loader.user).to eq user
  end

  it "returns nil if no user is found" do
    loader = SwitchUser::UserLoader.new("user", 3)

    expect(User.find_by_id(3)).to be_nil
    expect(loader.user).to eq nil
  end

  it "loads a user with an alternate identifier column" do
    allow(User).to receive(:where).with(email: 2).and_return(user_result)
    SwitchUser.available_users_identifiers = { user: :email }

    loader = SwitchUser::UserLoader.new("user", 2)
    expect(loader.user).to eq user
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
switch_user-1.5.0 spec/switch_user/user_loader_spec.rb