require 'rails_helper'

RSpec.describe Obra::OrdemDeServico, type: :model do

	it{ is_expected.to belong_to :obra }
	it{ is_expected.to belong_to :contrato }
	it{ is_expected.to belong_to :empenho }

	it{ is_expected.to have_many(:ordens_de_servico).through(:obra) }

	it { is_expected.to validate_length_of(:codigo).is_at_most(12) }

	it { is_expected.to validate_numericality_of(:prazo_de_execucao).is_greater_than(0).allow_nil }

	[:codigo, :data_prevista_de_termino, :data_de_inicio, :obra_id, :contrato_id].each do |atributo|
		it{ is_expected.to validate_presence_of atributo }
	end

	describe '' do
		subject { Obra::OrdemDeServico.new(obra: Contabilidade::Obra.find_or_create_by!( FactoryBot.attributes_for( :obra_0001, tipo_de_obra: :servico ) )) }
		it{ is_expected.to validate_presence_of :historico}
	end

	describe '' do
		subject { Obra::OrdemDeServico.new(prazo_de_execucao: nil) }
		it{ is_expected.to validate_presence_of :data_prevista_de_termino}
	end

	describe '' do
		subject { Obra::OrdemDeServico.new(data_prevista_de_termino: nil) }
		it{ is_expected.to validate_presence_of :prazo_de_execucao}
	end

	describe '' do
		subject { Obra::OrdemDeServico.new(prazo_de_execucao: nil, data_prevista_de_termino: nil) }
		it{ is_expected.to validate_presence_of :data_prevista_de_termino}
	end

end
