require 'rails_helper'

RSpec.describe UnidadeDeMedida, type: :model do
	it{ is_expected.to have_many( :indicadores ).dependent( :restrict_with_exception) }
	it{ is_expected.to have_many( :quantitativos ).dependent( :restrict_with_exception) }

	it{ is_expected.to validate_presence_of :descricao }
	it{ is_expected.to validate_uniqueness_of(:descricao).case_insensitive }

	describe '#case_sensitive_caracteres_acentuados' do
		it 'retorna mensagem de erro se já houver um registro com a mesma descrição independente de acentuação' do
			unidade_de_medida = FactoryBot.create( :unidade_de_medida, descricao: "unidade" )
			unidade_de_medida_com_erro = UnidadeDeMedida.new( FactoryBot.attributes_for( :unidade_de_medida, descricao: 'únidade' ) )
			unidade_de_medida_com_erro.save

			expect(unidade_de_medida_com_erro.errors[:descricao]).to include('já está em uso')
		end
	end
	describe '#impedir_editar_campo_percentual' do
		it 'retorna mensagem de erro se for percentual' do
			unidade_de_medida = FactoryBot.create( :percentual )
			unidade_de_medida.update(descricao: 'teste')
			expect(unidade_de_medida.errors[:descricao]).to include('Você não pode alterar essa unidade de medida')
		end
	end
	describe '#impedir_deletar_campo_percentual' do
		it 'retorna mensagem de erro se for percentual' do
			unidade_de_medida = FactoryBot.create( :percentual )
			unidade_de_medida.destroy
			expect(unidade_de_medida.errors[:descricao]).to include('Você não pode deletar essa unidade de medida')
		end
	end
end
