require 'rails_helper'

RSpec.describe Base::NaturezaDaAcao, type: :model do
	it { is_expected.to belong_to(:modulo).required }
	it { is_expected.to have_many(:acoes).class_name("Loa::Acao").dependent(:restrict_with_exception) }

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

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

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

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

end
