require 'rails_helper'

RSpec.describe Base::ElementosDeDespesaController, type: :controller do
	sign_in_admin
	set_orcamento_na_sessao

	describe "GET #index" do
		it "uma lista com as categorias economicas do contexto atual" do
			@categoria_economica_2016 = FactoryBot.create :despesas_correntes, :orcamento_2016
			@categoria_economica_2017 = FactoryBot.create :despesas_correntes, :orcamento_2017
			get :index, modulo: @orcamento.class.to_s.downcase, exercicio: @orcamento.exercicio
			expect( assigns(:categorias_economicas) ).to match @orcamento.categorias_economicas.selecionados.order(:codigo)
			expect( assigns(:categorias_economicas) ).to_not include @categoria_economica_2017
		end
	end

	describe "GET #lista_de_elementos" do
		it "uma lista com as categorias economicas do contexto atual" do
			@categoria_economica_2016 = FactoryBot.create :despesas_correntes, :orcamento_2016
			@categoria_economica_2017 = FactoryBot.create :despesas_correntes, :orcamento_2017

			get :lista_de_elementos, modulo: @orcamento.class.to_s.downcase, exercicio: @orcamento.exercicio
			expect( assigns(:categorias_economicas) ).to match @orcamento.categorias_economicas.order(:codigo)
			expect( assigns(:categorias_economicas) ).to_not include @categoria_economica_2017
		end
	end

	describe 'GET #configurar_elemento_de_despesa' do
		it 'renderiza o template de configuração do elemento de despesa' do
			elemento_de_despesa = FactoryBot.create :elemento_de_despesa_material_de_consumo, :sem_validacao
			get :configurar_elemento_de_despesa, { modulo: @orcamento.class.to_s.downcase, exercicio: @orcamento.exercicio, id: elemento_de_despesa.id }

			expect(response).to render_template(:configurar_elemento_de_despesa)
		end

		it 'atribui elemento_de_despesa à @base_elemento_de_despesa' do
			elemento_de_despesa = FactoryBot.create :elemento_de_despesa_material_de_consumo, :sem_validacao
			get :configurar_elemento_de_despesa, { modulo: @orcamento.class.to_s.downcase, exercicio: @orcamento.exercicio, id: elemento_de_despesa.id }

			expect(assigns(:base_elemento_de_despesa)).to eq elemento_de_despesa
		end
	end
end
