rspecを使用してカンカンカンの能力をテストしようとしています
しかし、特定のユーザーができることをテストするのではなく、ユーザーができないことをテストしようとしています。
今、私は次のようなコンテキストのブロックを持っています:
context "for a manager" do
before do
@manager = FactoryGirl.build(:user, :manager)
@ability = Ability.new(@manager)
end
it "should not be able to create Questions" do
expect(@ability).not_to be_able_to(:create, Question.new)
end
it "should not be able to read Questions" do
expect(@ability).not_to be_able_to(:read, Question.new)
end
it "should not be able to update Questions" do
expect(@ability).not_to be_able_to(:update, Question.new)
end
it "should not be able to delete Questions" do
expect(@ability).not_to be_able_to(:destroy, Question.new)
end
end
これは、 type のユーザーがモデルmanager
へのいかなる形式のアクセス権も持ってはならないことを明確に示しています。Question
it
このブロック全体を 1 つのブロックだけで、1 つのブロックに直接書き込む方法はありexpect
ますか?
以下のように書くことを考えました。
context "for a manager" do
before do
@manager = FactoryGirl.build(:user, :manager)
@ability = Ability.new(@manager)
end
it "should not be able to manage Questions" do
expect(@ability).not_to be_able_to(:manage, Question.new)
end
end
しかし、このテストは、そのリソースの能力の 1 つが付与されていないのと同じくらい合格するため、これは必ずしも意図したとおりに機能するとは限らないと考えています。
要するに、そのようなシナリオをテストする直接的な方法はありますか? ありがとうございます。