require 'rails_helper'

RSpec.describe NaturezaDaDespesa::ElementoDeDespesa, type: :model do
	it{ is_expected.to validate_presence_of :codigo }
	it{ is_expected.to validate_presence_of :descricao }

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

	it { is_expected.to have_many(:sub_elementos_de_despesa) }
	it { is_expected.to have_many(:classificacoes_de_despesa).inverse_of(:elemento_de_gasto).class_name("Base::ElementoDeDespesa").with_foreign_key(:elemento_de_gasto_id) }
	it { is_expected.to have_many(:elementos_por_categoria).class_name("Base::ElementoPorCategoria") }
	it { is_expected.to have_many(:subcategorias).through(:elementos_por_categoria).source(:categoria) }

	describe 'codigo_e_descricao' do
		it 'retorna string com codigo e descricao' do
			despesa = NaturezaDaDespesa::ElementoDeDespesa.new(codigo:"999", descricao: "elemento")
			expect(despesa.codigo_e_descricao).to eq("999 - elemento")
		end
	end
end
