ability_spec.rb revision 7dc6b7f64c94d4e335e637d30de00e54cdaa0748
require 'spec_helper'
before do
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
before do
end
end
end
end
end
end
should be_able_to(:show, item)
end
end
end
end
end
pending 'add tests for all roles'
end
before do
memberteam.users << user
end
context 'admin' do
it 'be allowed: edit, update, destroy' do
[:edit, :update, :destroy].each do |perm|
should be_able_to(perm, create(:team_user, user: user).team)
end
end
end
context 'member' do
it 'be allowed: create, show, index' do
[:create, :show, :index].each do |perm|
should be_able_to(perm, Team.new)
end
end
it 'not be allowed: edit, update, destroy (without admin on team)' do
[:edit, :update, :destroy].each do |perm|
should_not be_able_to(perm, @memberteam)
end
end
it 'not be allowed: edit, update, destroy (without being on team)' do
[:edit, :update, :destroy].each do |perm|
should_not be_able_to(perm, otherteam)
end
end
end
end
context 'Comment' do
let(:comment){ create :comment }
context 'author' do
subject(:ability){ Ability.new(comment.user) }
it 'destroy his own comment' do
should be_able_to(:destroy, comment)
end
it 'not be allowed to destroy others comment' do
should_not be_able_to(:destroy, create(:comment))
end
end
context 'admin' do
subject(:ability){ Ability.new(create :admin) }
it 'destroy others comment' do
should be_able_to(:destroy, comment)
end
end
context 'comments repository owner' do
subject(:ability){ Ability.new(owner) }
before do
create(:permission, subject: owner, role: 'owner', item: comment.commentable.repository)
end
it 'destroy others comments for his repository' do
should be_able_to(:destroy, comment)
end
end
context 'comments repository editor' do
subject(:ability){ Ability.new(owner) }
before do
create(:permission, subject: owner, role: 'editor', item: comment.commentable.repository)
end
it 'not destroy others comments for his repository' do
should_not be_able_to(:destroy, comment)
end
end
end
end