Sha256: 8daef56493755bc81e1faee7fdeca0701fca7512e0aba6484587f02c2a88f131

Contents?: true

Size: 1.86 KB

Versions: 10

Compression:

Stored size: 1.86 KB

Contents

# frozen_string_literal: true

# Copyright (c) 2008-2013 Michael Dvorkin and contributors.
#
# Fat Free CRM is freely distributable under the terms of MIT license.
# See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
#------------------------------------------------------------------------------
require 'spec_helper'
require 'cancan/matchers'

def all_actions
  %i[index show create update destroy manage]
end

describe "User abilities" do
  subject(:ability)  { Ability.new(user) }
  let(:subject_user) { build :user }

  context "when site manager, I" do
    let(:user)  { build :user, admin: true }
    all_actions.each do |do_action|
      it { is_expected.to be_able_to(do_action, subject_user) }
    end
  end

  context "when myself, I" do
    let(:user) { build :user }
    let(:subject_user) { user }
    all_actions.each do |do_action|
      it { is_expected.to be_able_to(do_action, subject_user) }
    end
  end

  context "when another user, I" do
    let(:user)  { create :user }
    let(:can)    { [] }
    let(:cannot) { %i[show create update index destroy manage] }
    it do
      can.each do |do_action|
        is_expected.to be_able_to(do_action, subject_user)
      end
    end
    it do
      cannot.each do |do_action|
        is_expected.not_to be_able_to(do_action, subject_user)
      end
    end
  end

  context "when anonymous user, I" do
    let(:user)  { nil }
    let(:can)    { [] }
    let(:cannot) { %i[show create update index destroy manage] }
    it do
      can.each do |do_action|
        is_expected.to be_able_to(do_action, subject_user)
      end
    end
    it do
      cannot.each do |do_action|
        is_expected.not_to be_able_to(do_action, subject_user)
      end
    end

    it "and signup enabled" do
      allow(User).to receive(:can_signup?).and_return(true)
      is_expected.to be_able_to(:create, User)
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
fat_free_crm-0.20.1 spec/models/users/abilities/user_ability_spec.rb
fat_free_crm-0.20.0 spec/models/users/abilities/user_ability_spec.rb
fat_free_crm-0.19.2 spec/models/users/abilities/user_ability_spec.rb
fat_free_crm-0.19.0 spec/models/users/abilities/user_ability_spec.rb
fat_free_crm-0.18.2 spec/models/users/abilities/user_ability_spec.rb
fat_free_crm-0.17.3 spec/models/users/abilities/user_ability_spec.rb
fat_free_crm-0.18.1 spec/models/users/abilities/user_ability_spec.rb
fat_free_crm-0.18.0 spec/models/users/abilities/user_ability_spec.rb
fat_free_crm-0.17.2 spec/models/users/abilities/user_ability_spec.rb
fat_free_crm-0.17.1 spec/models/users/abilities/user_ability_spec.rb