1

I have this policy for cards, only i am using scope, its very simple, but once i tried to test with rspec i am getting errors, i am pasting my code and the below of that is the error:

this is the test, i am creating user, card and the scope, i dont know how can i solve that, for me everything is ok, help to realize with the error please

require 'rails_helper'

RSpec.describe CardPolicy, type: :policy do
  let(:card) {  FactoryBot.build_stubbed :card }
  let(:scope) { Pundit.policy_scope(user, Card.all) }
    
  describe "Scope" do
    context 'admin user' do
      let(:user) { User.new(role: 'admin') }
      it 'allows access to all the reports' do
        expect(scope).to match_array([card])
      end
    end
  end
end

this is the error:

Failure/Error: actual collection contained: []

i believe this is the error, because scope is empty:

let(:scope) { Pundit.policy_scope(user, Card.all) }
mtsyumm
  • 39
  • 5

1 Answers1

1

In Pundit.policy_scope(user, card) you're passing an instance of a Card to policy_scope which is unlikely to respond to all

Try using multiple cards/items instead (e.g something that works like Card.all).

Sebastián Palma
  • 32,692
  • 6
  • 40
  • 59