require 'rails_helper'


RSpec.describe Contabilidade::LotesDeReceitasController, type: :controller do
	sign_in_admin
	cria_configuracao_default
	set_orcamento_na_sessao

	# Isso deve retornar o mínimo de atributos obrigatórios para criar um
	# Contabilidade::LoteDeReceita válido.

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

	let(:atributos_invalidos) {
		{ valor: nil }
	}


	describe "GET #index" do
		it "atribui a lista de lotes_de_receitas à @lotes_de_receitas" do
			lote_de_receita = Contabilidade::LoteDeReceita.create! atributos_validos
			get :index
			expect(assigns(:lotes_de_receitas)).to eq([lote_de_receita])
		end
	end

	describe "GET #show" do
		it "atribui a lote_de_receita requisitado(a) à @lote_de_receita" do
			lote_de_receita = Contabilidade::LoteDeReceita.create! atributos_validos
			get :show, params: {id: lote_de_receita.to_param}
			expect(assigns(:lote_de_receita)).to eq(lote_de_receita)
		end
	end

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

	describe "PUT #update" do
		context "com parâmetros válidos" do
			let(:novos_atributos) {
				skip("Adicione um hash de atributos novos e válidos para seu modelo")
			}

			it "atualiza o(a) lote_de_receita requisitado(a)" do
				lote_de_receita = Contabilidade::LoteDeReceita.create! atributos_validos
				put :update, params: {id: lote_de_receita.to_param, contabilidade_lote_de_receita: novos_atributos}
				lote_de_receita.reload
				skip("Adicione as validações de teste aqui")
			end

			it "atribui o(a) lote_de_receita requisitado(a) à @lote_de_receita" do
				lote_de_receita = Contabilidade::LoteDeReceita.create! atributos_validos
				put :update, params: {id: lote_de_receita.to_param, contabilidade_lote_de_receita: atributos_validos}
				expect(assigns(:lote_de_receita)).to eq(lote_de_receita)
			end

			it "redireciona para o(a) lote_de_receita" do
				lote_de_receita = Contabilidade::LoteDeReceita.create! atributos_validos
				put :update, params: {id: lote_de_receita.to_param, contabilidade_lote_de_receita: atributos_validos}
				expect(response).to redirect_to(lote_de_receita)
			end
		end

		context "com parâmetros inválidos" do
			it "atribui o(a) lote_de_receita à @lote_de_receita" do
				lote_de_receita = Contabilidade::LoteDeReceita.create! atributos_validos
				put :update, params: {id: lote_de_receita.to_param, contabilidade_lote_de_receita: atributos_invalidos}
				expect(assigns(:lote_de_receita)).to eq(lote_de_receita)
			end

			it "re-renderiza o template 'edit'" do
				lote_de_receita = Contabilidade::LoteDeReceita.create! atributos_validos
				put :update, params: {id: lote_de_receita.to_param, contabilidade_lote_de_receita: atributos_invalidos}
				expect(response).to render_template("edit")
			end
		end
	end
end
