require 'rails_helper' RSpec.describe ConsolidacaoPolicy do subject { described_class } let(:consolidacao) { build(:consolidacao, status: :rascunho) } let(:consolidacao_finalizada) { build(:consolidacao, status: :finalizada) } permissions :index?, :show?, :create? do it 'libera para admin, gerente e operador' do %i[admin gerente operador].each do |papel| expect(subject).to permit(build(papel), Consolidacao) end end it 'nega para motorista' do expect(subject).not_to permit(build(:motorista), Consolidacao) end end permissions :update? do it 'permite operador editar rascunho' do expect(subject).to permit(build(:operador), consolidacao) end it 'impede operador de editar consolidação finalizada' do expect(subject).not_to permit(build(:operador), consolidacao_finalizada) end it 'permite gerente editar consolidação finalizada' do expect(subject).to permit(build(:gerente), consolidacao_finalizada) end end permissions :destroy? do it 'só permite admin e gerente' do expect(subject).to permit(build(:admin), consolidacao) expect(subject).to permit(build(:gerente), consolidacao) expect(subject).not_to permit(build(:operador), consolidacao) end end end