Implandação da customização das permissões dos usuarios e das notificaçoes
This commit is contained in:
60
spec/models/perfil_acesso_spec.rb
Normal file
60
spec/models/perfil_acesso_spec.rb
Normal file
@@ -0,0 +1,60 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe PerfilAcesso do
|
||||
it 'descarta chave que não existe mais no catálogo ao salvar' do
|
||||
perfil = create(:perfil_acesso, permissoes: ['consolidacao.ver', 'permissao.aposentada'])
|
||||
|
||||
expect(perfil.permissoes).to eq(['consolidacao.ver'])
|
||||
expect(perfil).to be_pode('consolidacao.ver')
|
||||
expect(perfil).not_to be_pode('permissao.aposentada')
|
||||
end
|
||||
|
||||
it 'não aceita dois perfis com o mesmo nome' do
|
||||
create(:perfil_acesso, nome: 'Financeiro')
|
||||
expect(build(:perfil_acesso, nome: 'financeiro')).not_to be_valid
|
||||
end
|
||||
|
||||
describe '#apagavel?' do
|
||||
it 'perfil de sistema não é apagável' do
|
||||
expect(build(:perfil_acesso, sistema: true)).not_to be_apagavel
|
||||
end
|
||||
|
||||
it 'perfil em uso não é apagável (o usuário cairia no fallback sem avisar)' do
|
||||
perfil = create(:perfil_acesso)
|
||||
create(:operador, perfil_acesso: perfil)
|
||||
|
||||
expect(perfil.reload).not_to be_apagavel
|
||||
end
|
||||
|
||||
it 'perfil livre é apagável' do
|
||||
expect(create(:perfil_acesso)).to be_apagavel
|
||||
end
|
||||
end
|
||||
|
||||
describe 'permissões do usuário' do
|
||||
it 'o perfil vence o padrão do papel' do
|
||||
# Gerente por papel veria Configurações; o perfil tira só isso.
|
||||
perfil = create(:perfil_acesso, permissoes: Permissao.do_role('gerente') - ['admin.configuracoes'])
|
||||
usuario = create(:gerente, perfil_acesso: perfil)
|
||||
|
||||
expect(usuario.pode?('consolidacao.registrar_pagamento')).to be(true)
|
||||
expect(usuario.pode?('admin.configuracoes')).to be(false)
|
||||
expect(usuario.pode_ver_config?).to be(false)
|
||||
end
|
||||
|
||||
it 'sem perfil, vale o padrão do papel (e não consulta o banco)' do
|
||||
usuario = build(:gerente) # não persistido, como nos specs de policy
|
||||
|
||||
expect(usuario.pode_consolidar?).to be(true)
|
||||
expect(usuario.pode_ver_config?).to be(true)
|
||||
expect(usuario.pode?('admin.perfis')).to be(false)
|
||||
end
|
||||
|
||||
it 'perfil vazio tira tudo sem precisar desativar a conta' do
|
||||
usuario = create(:operador, perfil_acesso: create(:perfil_acesso, permissoes: []))
|
||||
|
||||
expect(usuario.pode?('consolidacao.ver')).to be(false)
|
||||
expect(usuario.pode_consolidar?).to be(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user