require 'rails_helper'

RSpec.describe Licitacao::AtaDeRegistroDePrecos, type: :model do
	it { is_expected.to belong_to(:processo).class_name("Licitacao::Processo").with_foreign_key(:projeto_id).required }
	it { is_expected.to belong_to(:modelo_de_documento).with_foreign_key(:modelo_do_documento_id) }

#	[:empenhos_diretos].each do |campo|
		it { is_expected.to delegate_method(:empenhos_diretos).to(:processo) }
#	end

	[:numero, :data_inicio_de_vigencia, :data_final_de_vigencia].each do |atributo|
		it { is_expected.to validate_presence_of atributo }
	end

	it { is_expected.to validate_length_of(:numero).is_at_most(30) }
	it { is_expected.to validate_uniqueness_of :numero }

	describe ':valor_total_a_contratar_das_unidades_orcamentarias' do
		it "Deve retorna o saldo total a ser contratado" do
			ata_de_registro_de_precos = FactoryBot.create :ata_de_registro_de_preco
			expect(ata_de_registro_de_precos.valor_total_a_contratar_das_unidades_orcamentarias).to eq 0
		end
	end

	describe ':valor_a_contratar' do
		it "quando for por desconto" do
			pedido = FactoryBot.create(:pedido, :simplificado, status: 'fechado')
			item_do_pedido = FactoryBot.build(:item_do_pedido, :por_desconto, pedido_id: pedido.id, preco_estimativo: 10)
			item_do_pedido.save!
			pedido.reload
			projeto = FactoryBot.create(:licitacao_projeto, :simplificado)
			pessoa_do_projeto = FactoryBot.create(:licitacao_pessoa_do_projeto, projeto_id: projeto.id)
			contratado = FactoryBot.create(:licitacao_contratado, pessoa_do_projeto: pessoa_do_projeto)
			ata_de_registro_de_precos = Licitacao::AtaDeRegistroDePrecos.create(projeto_id: projeto.id, numero: "14.008/2018RP", texto_da_ata: "texto", data_inicio_de_vigencia: Date.parse("20/10/2017"), data_final_de_vigencia: Date.parse("22/11/2017"), )
			expect(ata_de_registro_de_precos.valor_a_contratar).to eq 740
		end

		it "quando não for por desconto" do
			pedido = FactoryBot.create(:pedido, :simplificado, status: 'fechado')
			projeto = FactoryBot.create(:licitacao_projeto, :simplificado)
			pessoa_do_projeto = FactoryBot.create(:licitacao_pessoa_do_projeto, projeto_id: projeto.id)
			contratado = FactoryBot.create(:licitacao_contratado, pessoa_do_projeto: pessoa_do_projeto)
			ata_de_registro_de_precos = Licitacao::AtaDeRegistroDePrecos.create(projeto_id: projeto.id, numero: "14.008/2018RP", texto_da_ata: "texto", data_inicio_de_vigencia: Date.parse("20/10/2017"), data_final_de_vigencia: Date.parse("22/11/2017"), )
			expect(ata_de_registro_de_precos.valor_a_contratar).to eq 740
		end
	end

end
