require 'rails_helper'

RSpec.describe Controladoria::Visto, type: :model do
	it { is_expected.to belong_to :vistoriavel }
	it { is_expected.to validate_presence_of :tipo }

	describe 'validate_presence_of :mensagem' do
		context 'quando aprovado = true' do
			subject { FactoryBot.build :controladoria_visto, aprovado: true }
			it { is_expected.to_not validate_presence_of :mensagem }
		end
		context 'quando aprovado = false' do
			subject { FactoryBot.build :controladoria_visto, aprovado: false }
			it { is_expected.to validate_presence_of :mensagem }
		end
	end

	describe '#nao_permite_mudar_visto' do
		context 'quando muda de aprovado para reprovado' do
			it 'retorna erro' do
				visto = Controladoria::Visto.new(aprovado: true)
				visto.save(validate: false)
				visto.update(aprovado: false)
				expect(visto.errors[:aprovado]).to include "não pode mudar visto"
			end
		end
		context 'quando muda de reprovado para aprovado' do
			it 'retorna erro' do
				visto = Controladoria::Visto.new(aprovado: false)
				visto.save(validate: false)
				visto.update(aprovado: true)
				expect(visto.errors[:aprovado]).to include "não pode mudar visto"
			end
		end
	end
end
