test/canard/ability_test.rb in canard-0.5.0.pre vs test/canard/ability_test.rb in canard-0.6.0.pre

- old
+ new

@@ -1,108 +1,100 @@ +# frozen_string_literal: true + require 'test_helper' describe Ability do - before do - Canard::Abilities.definition_paths = [File.expand_path('../../dummy/app/abilities', __FILE__)] + Canard::Abilities.definition_paths = [File.expand_path('../dummy/app/abilities', __dir__)] # reload abilities because the reloader will have removed them after the railtie ran Canard.find_abilities end - describe "new" do - - describe "with a user" do - + describe 'new' do + describe 'with a user' do let(:user) { User.new } subject { Ability.new(user) } - it "assign the user to Ability#user" do + it 'assign the user to Ability#user' do subject.user.must_equal user end - end - describe "with a model that references a user" do - + describe 'with a model that references a user' do let(:user) { User.create } - let(:member) { Member.new(:user => user) } + let(:member) { Member.new(user: user) } subject { Ability.new(member) } - it "assign the user to Ability#user" do + it 'assign the user to Ability#user' do subject.user.must_equal user end - end - describe "with a user that has author role" do - - let(:user) { User.create(:roles => [:author]) } - let(:member) { Member.create(:user => user) } - let(:other_member) { Member.new(:user => User.create) } + describe 'with a user that has author role' do + let(:user) { User.create(roles: [:author]) } + let(:member) { Member.create(user: user) } + let(:other_member) { Member.new(user: User.create) } subject { Ability.new(user) } - it "has all the abilities of the base class" do + it 'has all the abilities of the base class' do subject.can?(:edit, member).must_equal true subject.can?(:update, member).must_equal true subject.can?(:edit, other_member).wont_equal true subject.can?(:update, other_member).wont_equal true end - it "has all the abilities of an author" do + it 'has all the abilities of an author' do subject.can?(:new, Post).must_equal true subject.can?(:create, Post).must_equal true subject.can?(:edit, Post).must_equal true subject.can?(:update, Post).must_equal true subject.can?(:show, Post).must_equal true subject.can?(:index, Post).must_equal true end - it "has no admin abilities" do + it 'has no admin abilities' do subject.cannot?(:destroy, Post).must_equal true end - end - describe "with a user that has admin and author roles" do - - let(:user) { User.create(:roles => [:author, :admin]) } - let(:member) { Member.create(:user => user) } + describe 'with a user that has admin and author roles' do + let(:user) { User.create(roles: %i[author admin]) } + let(:member) { Member.create(user: user) } let(:other_user) { User.create } - let(:other_member) { Member.new(:user => other_user) } + let(:other_member) { Member.new(user: other_user) } subject { Ability.new(user) } - it "has all the abilities of the base class" do + it 'has all the abilities of the base class' do subject.can?(:edit, member).must_equal true subject.can?(:update, member).must_equal true subject.cannot?(:edit, other_member).must_equal true subject.cannot?(:update, other_member).must_equal true end - it "has all the abilities of an author" do + it 'has all the abilities of an author' do subject.can?(:new, Post).must_equal true end - it "has the abilities of an admin" do + it 'has the abilities of an admin' do subject.can?(:manage, Post).must_equal true subject.can?(:manage, other_user).must_equal true subject.can?(:destroy, other_user).must_equal true subject.cannot?(:destroy, user).must_equal true end - end - describe "a user with editor role" do - let(:user) { User.create(:roles => [:editor]) } - let(:member) { Member.create(:user => user) } + describe 'a user with editor role' do + let(:user) { User.create(roles: [:editor]) } + let(:member) { Member.create(user: user) } let(:other_user) { User.create } - let(:other_member) { Member.new(:user => other_user) } + let(:other_member) { Member.new(user: other_user) } subject { Ability.new(user) } - it "has all the abilities of the base class" do + it 'has all the abilities of the base class' do subject.can?(:edit, member).must_equal true subject.can?(:update, member).must_equal true subject.cannot?(:edit, other_member).must_equal true subject.cannot?(:update, other_member).must_equal true @@ -111,18 +103,16 @@ it "has most of the abilities of authors, except it can't create Posts" do subject.can?(:update, Post).must_equal true subject.can?(:read, Post).must_equal true subject.cannot?(:create, Post).must_equal true end - end - describe "with no user" do - + describe 'with no user' do subject { Ability.new } - it "applies the guest abilities" do + it 'applies the guest abilities' do subject.can?(:index, Post) subject.can?(:show, Post) subject.cannot?(:create, Post) subject.cannot?(:update, Post) @@ -131,45 +121,43 @@ subject.cannot?(:show, User) subject.cannot?(:show, Member) end end - describe "with an instance of an anonymous class that has author role" do - + describe 'with an instance of an anonymous class that has author role' do let(:klass) do Class.new do extend Canard::UserModel attr_accessor :roles_mask - acts_as_user :roles => [:author, :admin] - def initialize(*roles); self.roles = roles; end + acts_as_user roles: %i[author admin] + def initialize(*roles) + self.roles = roles + end end end let(:instance) { klass.new(:author) } - describe "for base class abilities" do - - it "does nothing" do + describe 'for base class abilities' do + it 'does nothing' do proc { Ability.new(instance) }.must_be_silent end end - describe "for assigned roles" do - + describe 'for assigned roles' do subject { Ability.new(instance) } - it "has all the abilities of an author" do + it 'has all the abilities of an author' do subject.can?(:new, Post).must_equal true subject.can?(:create, Post).must_equal true subject.can?(:edit, Post).must_equal true subject.can?(:update, Post).must_equal true subject.can?(:show, Post).must_equal true subject.can?(:index, Post).must_equal true end - it "has no admin abilities" do + it 'has no admin abilities' do subject.cannot?(:destroy, Post).must_equal true end end - end end end