require 'rails_helper'

RSpec.describe Base::GrupoDaFonteDeRecursos, type: :model do
	it{ is_expected.to belong_to(:modulo).required }

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

	[:codigo, :descricao].each do |atributo|
		it { is_expected.to validate_uniqueness_of(atributo).scoped_to(:modulo_id, :modulo_type)}
	end

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

	it { is_expected.to validate_length_of(:codigo).is_equal_to(1)}
	it { is_expected.to validate_length_of(:descricao).is_at_most(40)}

	it "não permite alterações no atributo modulo_id" do
		grupo_da_fonte_de_recursos = FactoryBot.create( :grupo_da_fonte_de_recursos )
		grupo_da_fonte_de_recursos.modulo_id = grupo_da_fonte_de_recursos.modulo_id + 1
		grupo_da_fonte_de_recursos.save
		expect( grupo_da_fonte_de_recursos.errors[:modulo_id] ).to include "não pode ser alterado"
	end

	it "não permite alterações no atributo modulo_type" do
		grupo_da_fonte_de_recursos = FactoryBot.create( :grupo_da_fonte_de_recursos )
		grupo_da_fonte_de_recursos.modulo_type = 'Ppa::Ppa'
		grupo_da_fonte_de_recursos.save
		expect( grupo_da_fonte_de_recursos.errors[:modulo_type] ).to include "não pode ser alterado"
	end
end
