require 'rails_helper'

RSpec.describe Licitacao::ItemDoProjetoPorPessoa, type: :model do
	it{ is_expected.to belong_to(:item_do_lote) }
	it{ is_expected.to belong_to(:pessoa_do_projeto) }

	it { is_expected.to delegate_method(:projeto).to(:pessoa_do_projeto) }

	subject { FactoryBot.build :item_do_projeto_por_pessoa }
	it { is_expected.to validate_presence_of :preco }
	it { is_expected.to validate_presence_of :marca }

	it_behaves_like "item com preço", :item_do_projeto_por_pessoa, {atributo: :preco, limite: 2}

	describe '#pessoa_do_projeto_ganhadora_do_lote' do
		let(:item_do_lote) { FactoryBot.create :licitacao_item_do_lote }
		let(:pessoa_do_projeto) { FactoryBot.create :licitacao_pessoa_do_projeto }
		let(:pessoa_do_projeto_do_lote) { Licitacao::PessoaDoProjetoDoLote.new(habilitado: 'true', pessoa_do_projeto_id: pessoa_do_projeto.id, lote_id: item_do_lote.lote.id) }
		let(:proposta) { FactoryBot.build :item_do_projeto_por_pessoa, :com_ganhador, item_do_lote: item_do_lote, pessoa_do_projeto: pessoa_do_projeto, final: true }
		context 'se a pessoa do projeto não tiver ganhado o lote do item' do
			it 'retona erro' do
				pessoa_do_projeto_do_lote.save(validate: false)
				proposta
				item_do_lote.lote.update!(ganhador: nil)
				proposta.validate
				expect(proposta.errors[:base]).to include("Licitante precisa ter ganhado o lote para dar lance final")
			end
		end
		context 'se a pessoa do projeto tiver ganhado o lote do item' do
			it 'salva' do
				proposta.validate
				expect(proposta).to be_valid
			end
		end
	end
end
