require 'rails_helper'


RSpec.describe Licitacao::DocumentosDoLicitanteController, type: :controller do
	sign_in_admin
	cria_configuracao_default
	set_licitacao_na_sessao

	let(:atributos_validos) {
		FactoryBot.attributes_for( :documento_do_licitante )
	}

	let(:atributos_invalidos) {
		{ documento_id: "" }
	}

	describe "GET #edit" do
		it "atribui o(a) documento_do_licitante requisitado à @documento_do_licitante" do
			documento_do_licitante = Licitacao::DocumentoDoLicitante.create! atributos_validos
			get :edit, params: {id: documento_do_licitante.to_param}
			expect(assigns(:documento_do_licitante)).to eq(documento_do_licitante)
		end
	end

	describe "PUT #update" do
		context "com parâmetros válidos" do
			documento = FactoryBot.create(:base_documento)
			let(:novos_atributos) {
				{ documento_id: documento.id }
			}

			it "atualiza o(a) documento_do_licitante requisitado(a)" do
				documento_do_licitante = Licitacao::DocumentoDoLicitante.create! atributos_validos
				post :update, params: {id: documento_do_licitante.to_param, licitacao_documento_do_licitante: novos_atributos}
				documento_do_licitante.reload
				expect(documento_do_licitante.documento).to eq documento
			end

			it "atribui o(a) documento_do_licitante requisitado(a) à @documento_do_licitante" do
				documento_do_licitante = Licitacao::DocumentoDoLicitante.create! atributos_validos
				post :update, params: {id: documento_do_licitante.to_param, licitacao_documento_do_licitante: atributos_validos}
				expect(assigns(:documento_do_licitante)).to eq(documento_do_licitante)
			end
		end

		context "com parâmetros inválidos" do
			it "atribui o(a) documento_do_licitante à @documento_do_licitante" do
				documento_do_licitante = Licitacao::DocumentoDoLicitante.create! atributos_validos
				post :update, params: {id: documento_do_licitante.to_param, licitacao_documento_do_licitante: atributos_invalidos}
				expect(assigns(:documento_do_licitante)).to eq(documento_do_licitante)
			end

			it "re-renderiza o template 'edit'" do
				documento_do_licitante = Licitacao::DocumentoDoLicitante.create! atributos_validos
				post :update, params: {id: documento_do_licitante.to_param, licitacao_documento_do_licitante: atributos_invalidos}
				expect(response).to render_template("edit")
			end
		end
	end
end
