require 'rails_helper'

RSpec.describe UserPolicy do
  subject { described_class }

  let(:outro) { build(:operador) }

  permissions :index? do
    it 'libera para admin e gerente, nega operador/motorista' do
      expect(subject).to permit(build(:admin), User)
      expect(subject).to permit(build(:gerente), User)
      expect(subject).not_to permit(build(:operador), User)
      expect(subject).not_to permit(build(:motorista), User)
    end
  end

  permissions :new?, :create? do
    it 'só admin cria usuários' do
      expect(subject).to permit(build(:admin), User)
      expect(subject).not_to permit(build(:gerente), User)
    end
  end

  permissions :update? do
    it 'admin edita qualquer um; cada um edita a si mesmo' do
      eu = build(:operador)
      expect(subject).to permit(build(:admin), outro)
      expect(subject).to permit(eu, eu)
      expect(subject).not_to permit(build(:operador), outro)
    end
  end

  permissions :destroy? do
    it 'admin exclui outros, mas não a si mesmo' do
      admin = build(:admin)
      expect(subject).to permit(admin, outro)
      expect(subject).not_to permit(admin, admin)
    end
  end
end
