require "rails_helper"

RSpec.describe AccountPolicy do
  subject { described_class }

  let(:user_context) { UserContext.new(user, build(:account)) }

  context "when user is admin" do
    let(:user) { create(:user, :admin) }

    permissions :create? do
      it { is_expected.to permit(user_context, :create) }
    end

    permissions :show? do
      it { is_expected.to permit(user_context, :show) }
    end

    permissions :update? do
      it { is_expected.to permit(user_context, :show) }
    end

    permissions ".scope" do
      subject { Pundit.policy_scope!(user, Account) }
      it { is_expected.not_to be_empty }
    end
  end

  context "when user is NOT admin" do
    let(:user) { create(:user, :associate) }

    permissions :create? do
      it { is_expected.not_to permit(user_context, :create) }
    end

    permissions :show? do
      it { is_expected.not_to permit(user_context, :show) }
    end

    permissions ".scope" do
      subject { Pundit.policy_scope!(user, Account) }
      it { is_expected.to eq(user.accounts) }
    end
  end
end
