require 'rails_helper'

RSpec.describe PpaParticipativo::InicioController, type: :controller do
	sign_in_cidadao

	let(:proposta_invalida) {
		{descricao: "Proposta Teste..."}
	}

	describe "GET #proposta" do
		context 'com envio de propostas' do
			it "renderiza view" do
				FactoryBot.create :ppa_fortaleza_2014, libera_propostas: true, ppa_participativo_ativo: true
				get :propostas
				expect(response).to have_http_status(:ok)
			end
		end
	end

	describe "POST #envia_proposta" do
		context "com parâmetros válidos" do
			it "Envia uma nova proposta" do
				ppa = FactoryBot.create :ppa_fortaleza_2014, libera_propostas: true, ppa_participativo_ativo: true
				proposta_valida = FactoryBot.attributes_for(:ppa_proposta, ppa_id: ppa.id)

				expect {
					post :envia_proposta, {ppa_proposta: proposta_valida}
				}.to change(Ppa::Proposta, :count).by(1)
			end
		end

		context "com parâmetros inválidos" do
			it "atribui um(a) ppa_ppa recém criado(a), mas não salvo(a), à @ppa_ppa" do
				ppa = FactoryBot.create :ppa_fortaleza_2014, libera_propostas: true, ppa_participativo_ativo: true
				proposta_valida = FactoryBot.attributes_for(:ppa_proposta, ppa_id: ppa.id)
				post :envia_proposta, {ppa_proposta: proposta_invalida}
				expect(assigns(:proposta)).to be_a_new(Ppa::Proposta)
			end

			it "re-renderiza o template 'new'" do
				ppa = FactoryBot.create :ppa_fortaleza_2014, libera_propostas: true, ppa_participativo_ativo: true
				proposta_valida = FactoryBot.attributes_for(:ppa_proposta, ppa_id: ppa.id)
				post :envia_proposta, {ppa_proposta: proposta_invalida}
				expect(response).to render_template("propostas")
			end
		end
	end
end
