require 'rails_helper'

RSpec.describe Contabilidade::IrrfPessoaFisica, type: :model do
	it { is_expected.to belong_to(:imposto_de_renda).required }

	it { is_expected.to validate_presence_of :imposto_de_renda_id }

	it { is_expected.to validate_uniqueness_of( :limite_da_faixa ).scoped_to( :imposto_de_renda_id ) }

	it { is_expected.to validate_numericality_of( :parcela_a_deduzir ).is_greater_than(0).allow_nil }
	it { is_expected.to validate_numericality_of( :limite_da_faixa ).is_greater_than(0).allow_nil }
	it { is_expected.to validate_numericality_of( :aliquota ).is_greater_than(0).is_less_than(100).allow_nil }

	describe '#descricao_para_retencao' do
		context "retorna faixa de base de calculo correspondente a pessoa fisica correspondente para o imposto escolhido" do
			it "quando for menor valor da faixa" do
				pessoa_fisica = FactoryBot.create(:irrf_pessoa_fisica_faixa_dois)
				expect(pessoa_fisica.descricao_para_retencao).to eq 'Até R$ 2.826,65'
			end

			it "quando for entre faixas" do
				faixa_1 = FactoryBot.create(:irrf_pessoa_fisica_faixa_dois)
				faixa_2 = FactoryBot.create(:irrf_pessoa_fisica_faixa_dois, limite_da_faixa: 3000)
				expect(faixa_2.descricao_para_retencao).to eq 'De R$ 2.826,66 até R$ 3.000,00'
			end

			it "quando for maior valor da faixa" do
				faixa_1 = FactoryBot.create(:irrf_pessoa_fisica_faixa_dois)
				faixa_2 = FactoryBot.create(:irrf_pessoa_fisica_faixa_dois, limite_da_faixa: 3000)
				faixa_3 = FactoryBot.create(:irrf_pessoa_fisica_faixa_dois, limite_da_faixa: 9999999999)
				expect(faixa_3.descricao_para_retencao).to eq 'Acima de R$ 3.000,00'
			end
		end
	end
end
