require 'rails_helper'

RSpec.describe ContextoController, type: :controller do
	sign_in_admin

	describe "GET #index" do
		it "retorna uma lista de ppas e de orcamentos" do
			ppa = FactoryBot.create( :ppa_fortaleza_2014 )
			orcamento = FactoryBot.create(:orcamento_2016)
			get :index

			expect(assigns(:ppas)).to include(ppa)
			expect(assigns(:orcamentos)).to eq([orcamento])
		end
	end

	describe "GET #selecionar_contexto" do
		describe "com parâmetros válidos" do
			it "redireciona para o contexto escolhido" do
				ppa = FactoryBot.create( :ppa_fortaleza_2014 )
				get :selecionar_contexto, {tipo: 'Ppa::Ppa', id: ppa.id }

				expect(response).to redirect_to(ppa)
			end

			it "seta o contexto escolhido na sessão" do
				orcamento = FactoryBot.create( :orcamento_2016 )
				get :selecionar_contexto, {tipo: 'Orcamento', id: orcamento.id }

				expect( session[:contexto_id] ).to eq(orcamento.id)
				expect( session[:contexto_tipo] ).to eq( orcamento.class.name )
			end
		end

		describe "com parâmetros válidos" do
			it "redireciona para a seleção de contexto" do
				get :selecionar_contexto, {tipo: 'Ppa::Ppa', id: 20 }

				expect(response).to redirect_to( contexto_path )
			end

			it "exibe uma mensagem de erro" do
				get :selecionar_contexto, {tipo: 'Ppa::Ppa', id: 20 }

				expect( flash[:alert] ).to eq( "Ocorreu um erro ao selecionar o contexto." )
			end
		end
	end

	context 'trocar modulos' do
		describe 'GET #seleciona_modulo' do
			it 'cotexto vazio' do
				orcamento = FactoryBot.create( :orcamento_2016 )
				session[:contexto_id] = orcamento.id
				get :seleciona_modulo
				expect(session[:contexto_id]).to be_nil
			end
		end
		describe 'POST #troca_modulo' do
			it "description" do
				post :troca_modulo, modulo: 'administrativo'
				expect(session[:modulo]).to eq('administrativo')
				expect(response).to redirect_to(contexto_path)
				expect(flash[:notice]).to include "Modulo selecionado com sucesso."
			end
		end
	end

end
