require 'rails_helper'

RSpec.describe Contabilidade::ValorDoConvenio, type: :model do
	it { is_expected.to belong_to(:convenio).inverse_of(:valores_do_convenio).required }
	it { is_expected.to belong_to :tipo_de_despesa }

	[:convenio_id, :tipo_de_despesa_id, :exercicio, :valor].each do |campo|
		it { is_expected.to validate_presence_of campo }
	end

	it { is_expected.to validate_uniqueness_of( :exercicio ).scoped_to( :convenio_id, :tipo_de_despesa_id ) }

	it { is_expected.to validate_numericality_of( :valor ).is_greater_than_or_equal_to( 0 ) }

	describe "#save" do
		before(:each) {
			@convenio = FactoryBot.create( :convenio0001 )
			@valor_do_convenio = @convenio.reload.valores_do_convenio.first
		}

		it "não permite alteração no exercicio" do
			@valor_do_convenio.exercicio = @valor_do_convenio.exercicio + 1
			@valor_do_convenio.validate
			expect( @valor_do_convenio.errors[:exercicio] ).to include( 'não pode ser alterado' )
		end

		it "não permite alteração na convenio_id" do
			@valor_do_convenio.convenio_id = @valor_do_convenio.convenio_id + 1
			@valor_do_convenio.validate
			expect( @valor_do_convenio.errors[:convenio_id] ).to include( 'não pode ser alterado' )
		end
	end

end
