require 'rails_helper'

RSpec.describe Contabilidade::Passagem, type: :model do

	it{ is_expected.to belong_to(:orcamento) }
	it{ is_expected.to belong_to(:projeto).class_name('Licitacao::Projeto') }
	it{ is_expected.to belong_to(:unidade_orcamentaria).class_name('Loa::UnidadeOrcamentaria') }
	it{ is_expected.to belong_to(:cidade_origem).class_name('Base::Cidade') }
	it{ is_expected.to belong_to(:cidade_destino).class_name('Base::Cidade') }

	it{ is_expected.to have_one(:empenho).dependent(:restrict_with_exception) }

	[:unidade_orcamentaria_id,:tipo, :empresa, :valor, :trajeto,:projeto_id,:data_de_cadastro].each do |atributo|
		it{ is_expected.to validate_presence_of atributo }
	end

	context "validações" do
		subject { FactoryBot.build :passagem_nacional }
		it{ is_expected.to be_valid }
	end

	context 'quando é nacional' do
		subject { FactoryBot.build :passagem_nacional }
		it { is_expected.to validate_presence_of :cidade_origem_id }
		it { is_expected.to validate_presence_of :cidade_destino_id }
		it { is_expected.to validate_absence_of :origem }
		it { is_expected.to validate_absence_of :destino }
	end

	context 'quando é internacional' do
		subject { FactoryBot.build :passagem_internacional }
		it { is_expected.to validate_absence_of :cidade_origem_id }
		it { is_expected.to validate_absence_of :cidade_destino_id }
		it { is_expected.to validate_presence_of :origem }
		it { is_expected.to validate_presence_of :destino }
	end

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