require 'rails_helper'

RSpec.describe Loa::TipoDeDeducao, type: :model do
  it{ is_expected.to belong_to :orcamento }

  it { is_expected.to validate_length_of(:codigo).is_equal_to(2) }

  [:orcamento_id, :codigo, :descricao].each do |atributo|
		it{ is_expected.to validate_presence_of atributo }
	end

	it{ is_expected.to validate_uniqueness_of( :codigo ).scoped_to(:orcamento_id)}
	it{ is_expected.to validate_numericality_of( :codigo )}

	describe 'valor_minimo_para_o_codigo' do
		it 'é igual a 0' do
			tipo_de_deducao = Loa::TipoDeDeducao.new( codigo: '0')
			tipo_de_deducao.validate
			expect(tipo_de_deducao.errors[:codigo]).to_not include "deve ser maior ou igual a 91"
		end

		it 'é igual a 91' do
			tipo_de_deducao = Loa::TipoDeDeducao.new( codigo: '91')
			tipo_de_deducao.validate
			expect(tipo_de_deducao.errors[:codigo]).to_not include "deve ser maior ou igual a 91"
		end

		it 'é igual a 32' do
			tipo_de_deducao = Loa::TipoDeDeducao.new( codigo: '32')
			tipo_de_deducao.validate
			expect(tipo_de_deducao.errors[:codigo]).to include "deve ser maior ou igual a 91"
		end
	end

	describe 'tipo_00_nao_pode_ser_apagado' do
		context 'quando tentar excluir sendo o tipo de codigo 00' do
			it 'retorna mensagem de erro' do
				tipo_de_deducao = Loa::TipoDeDeducao.create( codigo: '00')
				expect { tipo_de_deducao.destroy }.to raise_error('Não é possivel apagar o código 00.')
			end
		end
	end

	describe 'tipo_00_nao_pode_ser_editado' do
		context 'quando tentar excluir sendo o tipo de codigo 00' do
			it 'retorna mensagem de erro' do
				tipo_de_deducao = Loa::TipoDeDeducao.create( codigo: '00')
				tipo_de_deducao.codigo = '01'
				expect(tipo_de_deducao.errors[:codigo]).to_not include "Não é possivel editar o código 00."
			end
		end
	end
end
