У меня есть контроллер без модели, и у меня есть три роли, которые определены целыми числами.[1 для admin , 2 для Руководитель группы и 3 для Член команды ].Я хочу протестировать в RSpec
, что мое действие контроллера правильно доступно через cancancan
авторизацию.До сих пор я применил авторизацию для Team Member и смог правильно визуализировать представления во внешнем интерфейсе.Но в случае тестирования я получаю ошибку.
#My TeamMember Controller File
class TeamMemberController < ApplicationController
authorize_resource :class => TeamMemberController
def index
@user = User.new
user = User.find(session[:current_user_id])
if user.status == 1
total_leave = 21
elsif user.status == 2
total_leave = 17
end
available_leave = user.leave_balance
session[:total_leave] = total_leave
session[:available_leave] = available_leave
@leaves = Leave.where(user_id: session[:current_user_id])
end
def logOut
reset_session
redirect_to(:controller => 'user', :action => 'index')
end
end
Ability.rb
#My Ability.rb file
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.present?
if user.role == 3
can [:index, :logOut], [:TeamMemberController]
end
end
end
end
Мой файл RSpec
describe User do
subject(:ability){ Ability.new(user) }
let(:user){ FactoryBot.build(:user, role: 3) }
context "when is a Team Member" do
let(:role) {FactoryBot.build(:user)}
it "Should be able to Index#TeamMember" do
should be_able_to :index, TeamMemberController
end
end
end
Заводской файл для создания пользователя
factory :user do
id {45}
team_lead_id {2}
name {'Test Name'}
email {'Test Email'}
password {'Test Password'}
joining_date {'2018-04-04'.to_date}
status {2}
role {3}
leave_balance {17}
encrypted_password {"Test"}
confirmation_token {"Test"}
remember_token {"Test"}
end
И ошибка, которую я получаю:
User when is a Team Member Should be able to Index#TeamMember
Failure/Error: should be_able_to :index, TeamMemberController
expected to be able to index TeamMemberController
Итак, как я могу проверить действия моего контроллера, которые используют cancancan
в RSpec
?