require 'rails_helper'

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

	let(:liquidacao) {
		FactoryBot.attributes_for( :liquidacao_001, nota_fiscal_numero: 1234515 )
	}

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

	let(:atributos_invalidos) {
		{
			quantidade: 0
		}
	}

	it 'GET #editar_itens'
	it 'PUT #atualiza_itens'
	it 'DELETE #destroy'

	describe '#disponibiliza_dependencias_itens' do
		context 'quando empenho possui itens' do
			it 'retorna itens do empenho' do
				empenho = FactoryBot.create :empenho
				liquidacao = FactoryBot.create :liquidacao_001, empenho: empenho
				item_do_empenho = FactoryBot.create :item_do_empenho_caderno, empenho: empenho

				get :editar_itens, { id: liquidacao.id }
				expect(assigns(:itens)).to eq([item_do_empenho.item])
			end
		end

		context 'quando empenho não possui itens' do
			context 'e empenho pertence a contrato' do
			end
			context 'e empenho foi criado' do
				context 'diretamente de uma ata' do
					it 'retorna itens da ata'
				end
				context 'sem licitação' do
					it 'retorna todos os itens do sistema'
				end
			end
		end

		describe "PATCH #adiciona_itens" do
			context 'quando é passado itens por parâmetros' do
				it 'adiciona itens à @liquidacao' do
					# empenho = FactoryBot.create( :empenho, :solicitacao )
					# item = FactoryBot.create :caderno
					# get :adiciona_itens, {id: empenho.to_param, itens: [item.id]}
					# expect(empenho.itens_do_empenho.size).to be > 0
					# itens do empenho ta voltando vazio.
					pending("Implementar")
					fail
				end
			end

			context 'quando não é passado itens por parâmetros' do
				it 'não adiciona itens à @liquidacao' do
					# empenho = FactoryBot.create( :empenho, :solicitacao )
					# item = FactoryBot.create :caderno
					# get :adiciona_itens, {id: empenho.to_param, itens: []}
					# expect(empenho.reload.itens_do_empenho.size).to be == 0
					pending("Implementar")
					fail
				end

				it 'redireciona para a tela anterior' do
					@empenho = FactoryBot.create( :empenho, :solicitacao )
					liquidacao = FactoryBot.create :liquidacao_001, empenho: @empenho
					item = FactoryBot.create :caderno
					get :adiciona_itens, {id: liquidacao.to_param, itens: []}
					expect(response).to redirect_to(administrativo_busca_itens_liquidacao_path(liquidacao))
				end
			end
		end
	end
end
