0
나는 다음과 같은 정책을RSpec에 & 학자 - 매처 (Matchers) 시험 금지 권한
module Admin
class PostPolicy < AdminPolicy
def index?
true
end
def show?
scope.where(:id => record.id).exists? && user.present? && user == record.user
end
def create?
true
end
def update?
user.present? && user == record.user
end
def destroy?
user.present? && user == record.user
end
def delete?
destroy?
end
end
end
을하고 난 일부 RSpec에 테스트를 작성하기 위해 pundit-matchers
보석을 사용하고 있습니다. permit authorization
에
RSpec.describe Admin::PostPolicy do
subject { described_class.new(user, [:admin, post]) }
let(:user) { FactoryGirl.create(:user) }
context 'permit authorization' do
let(:post) { FactoryGirl.create(:post, user_id: user.id) }
it { is_expected.to permit_action(:edit) }
it { is_expected.to permit_action(:delete) }
end
context 'deny authorization' do
let(:post) { FactoryGirl.create(:post, user_id: user.id + 1) }
it { is_expected.to forbid_action(:edit) }
it { is_expected.to forbid_action(:delete) }
end
end
시험은 녹색,하지만 난 순서대로, 내가
ActiveRecord::RecordInvalid:
Validation failed: User must exist
가 어떻게이 문제를 해결할 수있는 다음과 같은 오류를 얻을 deny authorization
을 테스트 할 때 테스트를 녹색 얻을 수? 논리는 사용자 ID가 여기에 지정했기 때문에 사용자가