require 'rails_helper'

RSpec.describe Loa::TemaDaSubacao, type: :model do
	it{ is_expected.to belong_to(:subacao).required }
	it{ is_expected.to belong_to(:orcamento_tematico).required }

	it{ is_expected.to validate_numericality_of(:percentual).is_greater_than_or_equal_to(0).is_less_than_or_equal_to(100).allow_nil }

	describe '#descricao' do
		it 'retorna a descrição' do
			tema_da_subacao = FactoryBot.build :loa_tema_da_subacao
			expect(tema_da_subacao.descricao).to eq "Crianças"
		end
	end

	describe '#tipo' do
		it 'tem 100% do valor orçado' do
			@tema_da_subacao = FactoryBot.build(:loa_tema_da_subacao, percentual: 100)

			expect(@tema_da_subacao.tipo).to eq "EX"
		end

		it 'não tem 100% do valor orçado' do
			@tema_da_subacao = FactoryBot.build(:loa_tema_da_subacao, percentual: 70)

			expect(@tema_da_subacao.tipo).to eq "NEX"
		end
	end

	describe '#valor_total' do
		before(:each) do
			@elemento_de_despesa_por_subacao = FactoryBot.create(:elemento_de_despesa_por_subacao)
			@orcamento_saude = FactoryBot.create(:orcamento_da_despesa_saude)
			@orcamento_educacao = FactoryBot.create(:orcamento_da_despesa_educacao)
		end

		it 'quando o percentual é 100%' do
			tema_da_subacao = FactoryBot.create(:loa_tema_da_subacao, percentual: 100)

			expect(tema_da_subacao.valor_total.to_f).to eq @elemento_de_despesa_por_subacao.valor_total.to_f
		end

		it 'quando o percentual é 70%' do
			tema_da_subacao = FactoryBot.create(:loa_tema_da_subacao, percentual: 70)

			expect(tema_da_subacao.valor_total.to_f).to eq 8655.969
		end

		it 'quando o percentual é zero' do
			tema_da_subacao = FactoryBot.create(:loa_tema_da_subacao, percentual: 0)

			expect(tema_da_subacao.valor_total.to_f).to eq 0
		end
	end
end
