require 'rails_helper'

RSpec.describe Perfil, type: :model do
	it{ is_expected.to have_many( :permissoes ).class_name( 'Acesso::Permissao' ).dependent(:destroy) }
	it{ is_expected.to have_many( :usuarios ) }

	it{ is_expected.to validate_uniqueness_of( :nome ) }
	it{ is_expected.to validate_presence_of :nome }

	describe "#administrador?" do
		context "quando tem o nome 'Administrador'" do
			it "retorna true" do
				perfil = Perfil.new(nome: 'Administrador')
				expect( perfil ).to be_administrador
			end
		end

		context "quando não tem o nome 'Administrador'" do
			it "retorna false" do
				perfil = Perfil.new(nome: 'Tecnico')
				expect( perfil ).to_not be_administrador
			end
		end
	end

	describe "#setor_de_compras?" do
		context "quando tem o nome Setor de Compras" do
			it "retorna true" do
				perfil = Perfil.new(nome: "Setor de Compras")
				expect( perfil ).to be_setor_de_compras
			end
		end

		context "quando não tem o nome Setor de Compras" do
			it "retorna false" do
				perfil = Perfil.new(nome: 'Tecnico')
				expect( perfil ).to_not be_setor_de_compras
			end
		end
	end

	describe "#secretario?" do
		context "quando tem o nome 'secretario'" do
			it "retorna true" do
				perfil = Perfil.new(nome: "Secretário")
				expect( perfil ).to be_secretario
			end
		end

		context "quando não tem o nome 'Administrador'" do
			it "retorna false" do
				perfil = Perfil.new(nome: 'Tecnico')
				expect( perfil ).to_not be_secretario
			end
		end
	end

	describe "#comissao?" do
		context "quando tem o nome 'Comissão de Licitação'" do
			it "retorna true" do
				perfil = Perfil.new(nome: "Comissão de Licitação")
				expect( perfil ).to be_comissao
			end
		end

		context "quando não tem o nome 'Administrador'" do
			it "retorna false" do
				perfil = Perfil.new(nome: 'Tecnico')
				expect( perfil ).to_not be_comissao
			end
		end
	end

	describe ".administrador" do
		it "retorna o perfil de administrador" do
			FactoryBot.create :perfil_administrador
			expect( Perfil.administrador ).to be_administrador
		end
	end
end
