require 'rails_helper'

RSpec.describe Base::FontesDeRecursos::FonteTCE, type: :model do
	it{ is_expected.to belong_to :fonte_stn }
	it{ is_expected.to validate_presence_of :fonte_stn_id }

	let(:fonte_stn) { FactoryBot.create :fonte_stn }

	describe "#codigo_completo" do
		it "retorna 'XXXXXXXXYY' - 'DESCRIÇÃO', onde XXXXXXXX é o código STN, YY é o codigo TCE" do
			fonte_de_recursos = Base::FontesDeRecursos::FonteTCE.create!(FactoryBot.attributes_for( :alienacao_de_bens, codigo: "99" ).merge(fonte_stn: fonte_stn))
			expect(fonte_de_recursos.codigo_completo).to eq '1001000099'
		end
	end

	describe "#codigo_e_descricao" do
		it "retorna 'XXXXXXXXYY' - 'DESCRIÇÃO', onde XXXXXXXXYY é o codigo_completo e a DESCRIÇÃO é a descrição da fonte de recursos" do
			fonte_de_recursos = Base::FontesDeRecursos::FonteTCE.create!(FactoryBot.attributes_for( :alienacao_de_bens, codigo: "99" ).merge(fonte_stn: fonte_stn))
			expect(fonte_de_recursos.codigo_e_descricao).to eq '1001000099 - Alienação de Bens'
		end
	end

	describe 'métodos de fontes específicas: ' do
		before(:each) do
		  @orcamento = FactoryBot.create :orcamento_2017, exercicio: 2019
			@orcamento.cria_fontes_de_recursos
		end
		describe '#recursos_ordinarios' do
			it 'retorna fonte de recurso ordinária do orçamento' do
				expect(@orcamento.fontes_de_recursos.recursos_ordinarios.codigo_completo).to eq "1001000000"
			end
		end
		describe '#recursos_de_saude' do
			it 'retorna fonte de recurso de saúde do orçamento' do
				expect(@orcamento.fontes_de_recursos.recursos_de_saude.codigo_completo).to eq "1211000000"
			end
		end
		describe '#recursos_de_educacao' do
			it 'retorna fonte de recurso de educação do orçamento' do
				expect(@orcamento.fontes_de_recursos.recursos_de_educacao.codigo_completo).to eq "1111000000"
			end
		end
	end
end
