require 'rails_helper'


RSpec.describe Contabilidade::AlteracoesDoElementoDaSolicitacaoController, type: :controller do
	sign_in_admin
	cria_configuracao_default
	set_contabilidade_na_sessao

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

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

	let(:atributos_invalidos) {
		{
			solicitacao_de_alteracao_orcamentaria_id: ''
		}
	}


	describe "GET #edit" do
		it "atribui o(a) alteracao_do_elemento_da_solicitacao requisitado à @alteracao_do_elemento_da_solicitacao" do
			alteracao_do_elemento_da_solicitacao = Contabilidade::AlteracaoDoElementoDaSolicitacao.create! atributos_validos
			get :edit, params: {id: alteracao_do_elemento_da_solicitacao.to_param}
			expect(assigns(:alteracao_do_elemento_da_solicitacao)).to eq(alteracao_do_elemento_da_solicitacao)
		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) alteracao_do_elemento_da_solicitacao requisitado(a)" do
				alteracao_do_elemento_da_solicitacao = Contabilidade::AlteracaoDoElementoDaSolicitacao.create! atributos_validos
				post :update, params: {id: alteracao_do_elemento_da_solicitacao.to_param, contabilidade_alteracao_do_elemento_da_solicitacao: novos_atributos}
				alteracao_do_elemento_da_solicitacao.reload
				skip("Adicione as validações de teste aqui")
			end

			it "atribui o(a) alteracao_do_elemento_da_solicitacao requisitado(a) à @alteracao_do_elemento_da_solicitacao" do
				alteracao_do_elemento_da_solicitacao = Contabilidade::AlteracaoDoElementoDaSolicitacao.create! atributos_validos
				post :update, params: {id: alteracao_do_elemento_da_solicitacao.to_param, contabilidade_alteracao_do_elemento_da_solicitacao: atributos_validos}
				expect(assigns(:alteracao_do_elemento_da_solicitacao)).to eq(alteracao_do_elemento_da_solicitacao)
			end

			it "redireciona para o(a) alteracao_do_elemento_da_solicitacao" do
				alteracao_do_elemento_da_solicitacao = Contabilidade::AlteracaoDoElementoDaSolicitacao.create! atributos_validos
				post :update, params: {id: alteracao_do_elemento_da_solicitacao.to_param, contabilidade_alteracao_do_elemento_da_solicitacao: atributos_validos}
				expect(response).to redirect_to(alteracao_do_elemento_da_solicitacao)
			end
		end

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

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