require 'rails_helper'

RSpec.describe Licitacao::Processo, type: :model do
	it { is_expected.to have_many(:impugnacoes).with_foreign_key(:projeto_id) }

	it { is_expected.to have_many(:pessoas_do_projeto).class_name("Licitacao::PessoaDoProjeto").dependent(:destroy) }

	it { is_expected.to accept_nested_attributes_for(:pessoas_do_projeto).allow_destroy(true) }

	let(:processo) { FactoryBot.create :licitacao_processo, :global }

	describe '#adiciona_licitantes' do
		context 'retorna a quantidade de licitantes adicionados' do
			it 'quando não é passada uma lista de licitantes' do
				expect(processo.adiciona_licitantes([])).to eq 0
			end

			it 'quando é passada uma lista de licitantes' do
				pessoa = FactoryBot.create(:pessoa_juridica)

				expect(processo.adiciona_licitantes([pessoa.id])).to eq 1
			end
		end
	end

	describe '#valida_edicao_do_numero_do_processo' do
		context 'valida se é possivel editar o numero do processo' do
			it 'retorna true' do
				expect(processo.valid?).to be_truthy
			end
			it 'retorna false e error if enviado_para_o_sim' do
				FactoryBot.create(:configuracao)
				processo = FactoryBot.build(:licitacao_processo, :enviado_para_o_sim, numero_do_processo: '22010001')
				expect(processo.valid?).to be_falsey
				expect(processo.errors[:numero_do_processo]).to include 'Não é possivel configurar o número. O processo possui contratos, está empenhado ou já foi enviado para o sim'
			end
		end
	end

end
