require 'rails_helper'

RSpec.describe Contabilidade::MetaFisicaDaLiquidacao, type: :model do
	it { is_expected.to belong_to :liquidacao }
	it { is_expected.to belong_to( :meta_fisica ).class_name( 'Loa::MetaFisica' ) }

	it { is_expected.to validate_presence_of :liquidacao_id }
	it { is_expected.to validate_presence_of :meta_fisica_id }

	it{ is_expected.to validate_uniqueness_of( :meta_fisica_id ).scoped_to( :liquidacao_id ).with_message('já existe nesta liquidação') }

	it { is_expected.to validate_numericality_of( :quantidade ).is_greater_than(0) }

	describe '#quantidade_less_than_or_equal_to_quantidade_atual_da_meta_fisica' do
		it 'retorna mensagem de erro, caso a quantidade da meta física da liquidação seja maior que a quantidade a ser realizada da meta física' do
			empenho = FactoryBot.create(:empenho_22090001, descriminacao_obrigatoria_de_itens: false)
			liquidacao = FactoryBot.create(:liquidacao_001, empenho_id: empenho.id)
			meta_fisica_da_liquidacao = Contabilidade::MetaFisicaDaLiquidacao.new( FactoryBot.attributes_for( :meta_fisica_da_liquidacao_001, quantidade: 10, liquidacao_id: liquidacao.id ) )
			meta_fisica_da_liquidacao.save

			expect(meta_fisica_da_liquidacao.errors[:quantidade]).to include( 'quantidade deve ser menor ou igual a quantidade a realizar da meta física selecionada' )
		end
	end
end
