require 'rails_helper'

RSpec.describe Ppa::Meta, type: :model do

	it{ is_expected.to belong_to :objetivo }

	it{ is_expected.to validate_presence_of :descricao}
	it{ is_expected.to validate_presence_of :objetivo_id }

	it{ is_expected.to have_many( :quantitativos ).dependent(:destroy)  }

	subject { FactoryBot.build(:meta_contratar_profissionais) }
	it{ is_expected.to validate_uniqueness_of( :descricao ).scoped_to( :objetivo_id ) }

	describe "#valor_total_dos_quantitativos" do
		it "retorna a soma dos quantitativos" do
			meta = FactoryBot.create(:meta_contratar_profissionais)

			meta.quantitativos.each do |quantitativo|
				quantitativo.update(indice_de_referencia: 25)
			end
			expect(meta.valor_total_dos_quantitativos).to eq 100
		end
	end

	describe '#ppa' do
		it 'retorna o ppa o qual a meta percence' do
			meta = FactoryBot.create(:meta_contratar_profissionais)
			expect(meta.ppa).to eq meta.objetivo.programa.ppa
		end
	end

	describe "#after_create" do
		cria_tipos_de_despesa

		it "tem todos os quantitativos gerados com o indice_de_referencia zerado e a unidade_de_medida em branco" do
			meta = FactoryBot.create(:meta_contratar_profissionais)
			meta.quantitativos.each do |quantitativo|
				expect( quantitativo.indice_de_referencia ).to be_zero
			end
		end

		it "tem todos os quantitativos gerados com a unidade_de_medida em branco" do
			meta = FactoryBot.create(:meta_contratar_profissionais_para_ppa_atual)
			meta.quantitativos.each do |quantitativo|
				expect( quantitativo.unidade_de_medida ).to be_blank
			end
		end
	end
end
