require 'rails_helper'
require 'database_cleaner'

RSpec.describe Acesso::Permissao, type: :model do
	it { is_expected.to belong_to :perfil }
	it { is_expected.to belong_to :acao }

	describe "dados do seed" do
		before :all do
			DatabaseCleaner.strategy = :transaction
			DatabaseCleaner.start

			load File.expand_path('seed_permissoes.rb', Rails.root.to_s + '/db')
		end

		after :all do
			DatabaseCleaner.clean
		end

		alias_da_acao = {
			'show' => 'read',
			'index' => 'read',
			'new' => 'create',
			'edit' => 'update',
			'edit_password' => 'update_password',
			'configura_detalhamento_de_despesas_nas_iniciativas' => 'configuracoes',
			'prepara_importacao' => 'importar',
			'importar_receita_stn' => 'importar'
		}

		skipped_controllers = [
			'inicio',
			'pesquisas',
			'contexto',
			'changelogs',
			'devise/passwords',
			'devise/confirmations',
			'usuarios/sessions',
			'projecao/indices_de_projecao',
			'projecao/calculo_de_projecoes',
			'projecao/receitas_dos_calculos_de_projecao',
			'projecao/indices_do_calculo_de_projecao',
			'ppa/valores_do_convenio',
			'contabilidade/valores_do_convenio',
			'ppa/impressao_das_receitas',
			'ppa_participativo/inicio',
			'ppa_participativo/cidadaos/confirmations',
			'ppa_participativo/cidadaos/registrations',
			'ppa_participativo/cidadaos/sessions',
			'ppa_participativo/cidadaos/omniauth_callbacks',
			'ppa_participativo/cidadaos/passwords',
			'ppa_participativo/propostas',
			'base/subfuncoes',
			'base/cidades',
			'base/receitas_stn',
			'loa/elementos_de_despesa_por_subacao',
			'loa/assessores_de_contabilidade_responsaveis',
			'loa/relatorios/impressao_de_loa',
			'contabilidade/lancamentos_do_orcamento_da_receita',
			'contabilidade/lancamentos_do_orcamento_da_despesa',
			'contabilidade/lancamentos_extraorcamentario_receita',
			'contabilidade/lancamentos_extraorcamentario_despesa',
			'contabilidade/metas_fisicas_da_liquidacao',
			'contabilidade/contas_por_eventos_contabeis',
			'contabilidade/retencoes',
			'contabilidade/irrfs_pessoas_fisicas',
			'contabilidade/inss_pessoas_fisicas',
			'contabilidade/relatorios/decretos',
			'contabilidade/relatorios/contas',
			'contabilidade/relatorios/saldo_das_dotacoes',
			'contabilidade/relatorios/taloes_de_receita',
			'contabilidade/relatorios/balancetes_de_verificacoes',
			'contabilidade/relatorios/controle_de_pagamentos',
			'contabilidade/relatorios/solicitacoes_de_alteracao_orcamentaria',
			'licitacao/inicio',
			'licitacao/relatorios/pedidos',
			'licitacao/relatorios/processos',
			'licitacao/relatorios_da_licitacao',
			'administrativo/relatorios_do_administrativo',
			'tinymce_assets',
			'comunicacao/mensagens',
			'base/tecnicos',
			'controladoria/modelos_de_documento',
			'administrativo/empenhos',
			'contabilidade/orcamentos_do_contingenciamento',
			'contabilidade/documentos_da_diaria',
			'contabilidade/contas_extra_orcamentarias',
			'licitacao/fiscais_do_contrato',
			'licitacao/gestores_do_contrato',
			'contabilidade/membros_dos_comites_de_investimento',
			'contabilidade/membros_do_conselho_do_rpps',
			'contabilidade/fundos_de_investimento',
			'base/intermodulos',
			'contabilidade/acompanhamentos_de_parcelamento_do_rpps',
			'portal_da_transparencia',
			'gestao_de_estoque/relatorios/requisicoes_de_materiais',
			'contabilidade/itens_da_nota_fiscal',
			'licitacao/vistos_de_documentos_do_processo',
			'documentos_do_usuario',
			'licitacao/empenhos_retroativos_do_contrato',
			'gestao_de_estoque/responsaveis_dos_almoxarifados',
			'gestao_de_estoque/transferencias',
			'contabilidade/relatorios_pcasp',
			'controladoria/aditivos',
			'gestao_de_estoque/relatorios/recebimentos_de_materiais',
			'transparencia/documentos',
			'gestao_de_estoque/legislacao_bolsa_de_materiais',
			'contabilidade/transacoes_da_conciliacao',
			'contabilidade/conciliacoes_bancarias',
			'doorkeeper/authorizations',
			'doorkeeper/tokens',
			'licitacao/ocorrencias_da_ordem_de_compra',
			'contabilidade/configuracoes_do_evento_contabil',
			'contabilidade/relatorios_da_contabilidade'
		]

		skipped_actions = [
			{ controller: 'inicio', action: 'acesso_negado' },

			{ controller: 'pesquisas_controller', action: 'filtra_motivo_por_tipo_de_resto_a_pagar'},

			{ controller: 'active_storage/disk', action: 'update' },
			{ controller: 'active_storage/disk', action: 'show' },

			{ controller: 'active_storage/representations', action: 'show' },
			{ controller: 'active_storage/blobs', action: 'show' },
			{ controller: 'active_storage/direct_uploads', action: 'create' },

			{ controller: 'impressoes', action: 'index' },

			{ controller: 'usuarios', action: 'edit_password' },
			{ controller: 'usuarios', action: 'edit_password_via_email' },
			{ controller: 'usuarios', action: 'valida_senha', format: 'json' },
			{ controller: 'usuarios', action: 'edit_password_usuario' },
			{ controller: 'usuarios', action: 'update_password_usuario' },
			{ controller: 'usuarios', action: 'gerar_token' },

			{ controller: 'administrativo/', action: 'editar_itens' },
			{ controller: 'administrativo/empenhos', action: 'atualiza_itens' },
			{ controller: 'administrativo/liquidacoes', action: 'update' },
			{ controller: 'administrativo/relatorios/empenhos', action: 'imprimir' },
			{ controller: 'administrativo/relatorios/liquidacoes', action: 'imprimir' },
			{ controller: 'administrativo/relatorios/pagamentos', action: 'imprimir' },

			{ controller: 'administrativo/requisicoes_de_materiais', action: 'reabrir_requisicao' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'fechar_requisicao' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'receber_no_almoxarifado' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'recusar' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'atender_requisicao' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'concluir_atendimento_parcial' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'concluir_atendimento' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'adicionar_todos_os_itens_das_requisicoes_de_materiais' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'recusar_requisicao' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'editar_itens_das_requisicoes_de_materiais' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'atualiza_itens_das_requisicoes_de_materiais' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'demanda_programada' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'atualiza_demanda_programada' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'confirmar_multiplas_requisicoes' },
			{ controller: 'administrativo/requisicoes_de_materiais', action: 'concluir_consumo' },

			{ controller: 'base/agentes_publicos_municipais', action: 'pesquisa' },
			{ controller: 'base/agentes_publicos_municipais', action: 'resultado' },
			{ controller: 'base/categorias', action: 'subcategorias' },
			{ controller: 'base/contas_bancarias', action: 'get_saldo' },
			{ controller: 'base/contas_bancarias', action: 'get_unidades_orcamentarias' },
			{ controller: 'base/contas_bancarias', action: 'retorna_registro' },
			{ controller: 'base/contas_bancarias', action: 'movimentacoes' },
			{ controller: 'base/elementos_de_despesa', action: 'retornar_grupos_de_despesa' },
			{ controller: 'base/elementos_de_despesa', action: 'retorna_sub_elementos' },
			{ controller: 'base/elementos_de_despesa', action: 'retorna_elementos_por_acao_do_contingenciamento' },
			{ controller: 'base/elementos_de_despesa', action: 'tipo_preferencial_de_credor' },
			{ controller: 'base/elementos_de_despesa', action: 'configurar_elemento_de_despesa_update' },
			{ controller: 'base/elementos_de_despesa', action: 'escolher_elementos_de_despesa' },
			{ controller: 'base/elementos_de_despesa', action: 'retorna_codigo' },
			{ controller: 'base/funcoes', action: 'funcoes_por_tipo_de_natureza' },
			{ controller: 'base/naturezas_da_receita', action: 'detalhar_classificacao' },
			{ controller: 'base/naturezas_da_receita', action: 'detalhar_nova_classificacao' },
			{ controller: 'base/naturezas_da_receita', action: 'configurar_natureza_da_receita_update' },
			{ controller: 'base/pessoas', action: 'resultado' },
			{ controller: 'base/pessoas', action: 'pesquisa' },
			{ controller: 'base/pessoas', action: 'atualiza_cnaes' },
			{ controller: 'base/pessoas', action: 'editar_contas' },
			{ controller: 'base/pessoas', action: 'atualizar_contas' },
			{ controller: 'base/pessoas', action: 'resultado_por_empenho' },
			{ controller: 'base/pessoas', action: 'pesquisa_por_empenho' },
			{ controller: 'base/pessoas', action: 'resultado_credores' },
			{ controller: 'base/pessoas', action: 'pesquisa_credores' },
			{ controller: 'base/pessoas', action: 'editar_contas' },
			{ controller: 'base/pessoas', action: 'atualiza_contas' },
			{ controller: 'base/pessoas', action: 'valida_se_cnpj_ja_existe' },
			{ controller: 'base/pessoas', action: 'retorna_dados_do_responsavel' },
			{ controller: 'base/receitas_stn', action: 'importar_receita_stn'},
			{ controller: 'base/contas_bancarias_por_unidade_orcamentaria', action: 'atualizar_valor_da_conta' },
			{ controller: 'base/relatorios/contas_bancarias', action: 'imprimir' },
			{ controller: 'base/contas_bancarias', action: 'registro_bancario' },
			{ controller: 'base/alertas', action: 'alerta_almoxarifado'},

			{ controller: 'contabilidade/anulacoes_do_empenho', action: 'enviar_para_administrativo' },
			{ controller: 'contabilidade/diarias', action: 'selecionar_dotacao' },
			{ controller: 'contabilidade/diarias', action: 'adicionar_dotacao' },
			{ controller: 'contabilidade/diarias', action: 'excluir_dotacao' },
			{ controller: 'contabilidade/diarias', action: 'atualiza_dotacao' },
			{ controller: 'contabilidade/liquidacoes', action: 'update' },
			{ controller: 'contabilidade/liquidacoes', action: 'enviar_para_sim' },
			{ controller: 'contabilidade/liquidacoes', action: 'editar_data_de_envio_pro_sim' },
			{ controller: 'contabilidade/liquidacoes', action: 'atualizar_data_de_envio_pro_sim' },
			{ controller: 'contabilidade/liquidacoes', action: 'duplicar' },
			{ controller: 'contabilidade/liquidacoes', action: 'retorna_dados_da_liquidacao' },
			{ controller: 'contabilidade/liquidacoes', action: 'retorna_dados_do_fornecedor_da_liquidacao' },
			{ controller: 'contabilidade/liquidacoes', action: 'enviar_para_o_financeiro' },
			{ controller: 'contabilidade/liquidacoes', action: 'retornar_para_administrativo' },
			{ controller: 'contabilidade/liquidacoes', action: 'remover_retencoes' },
			{ controller: 'contabilidade/liquidacoes', action: 'atualiza_retencoes_de_folha' },
			{ controller: 'contabilidade/liquidacoes', action: 'editar_retencoes_de_folha' },
			{ controller: 'contabilidade/liquidacoes', action: 'retornar_para_solicitado' },
			{ controller: 'contabilidade/liquidacoes', action: 'retornar_para_recebido' },
			{ controller: 'contabilidade/liquidacoes', action: 'retorna_tipos_de_reconhecimento_do_passivo' },
			{ controller: 'contabilidade/liquidacoes', action: 'receber_multiplas_liquidacoes_na_contabilidade' },
			{ controller: 'contabilidade/liquidacoes', action: 'autoriza_multiplas_liquidacoes' },
			{ controller: 'contabilidade/liquidacoes', action: 'autorizar' },
			{ controller: 'contabilidade/liquidacoes', action: 'receber_multiplas_liquidacoes_no_financeiro' },
			{ controller: 'contabilidade/liquidacoes', action: 'retornar_para_contabilidade' },
			{ controller: 'contabilidade/liquidacoes', action: 'retorna_selecionados_para_contabilidade' },
			{ controller: 'contabilidade/liquidacoes', action: 'retorna_selecionados_para_o_administrativo' },

			{ controller: 'contabilidade/medicoes_da_obra', action: 'retorna_dados_da_medicao' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'enviar_medicao' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'medir' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'atualizar_itens_do_servico_externo' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'show_medicao' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'convidar' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'editar_itens_do_servico_externo' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'reenviar_email' },
			{ controller: 'contabilidade/pagamentos', action: 'atualizar_prepagamento_em_pagamento' },
			{ controller: 'contabilidade/pagamentos', action: 'get_valor_liquido' },
			{ controller: 'contabilidade/pagamentos', action: 'remover_retencoes' },
			{ controller: 'contabilidade/pagamentos', action: 'enviar_para_administrativo' },
			{ controller: 'contabilidade/pagamentos', action: 'atualiza_retencoes_de_folha' },
			{ controller: 'contabilidade/pagamentos', action: 'editar_retencoes_de_folha' },
			{ controller: 'contabilidade/relatorios/empenhos', action: 'imprimir' },
			{ controller: 'contabilidade/relatorios/liquidacoes', action: 'imprimir' },
			{ controller: 'contabilidade/solicitacao_de_alteracao_orcamentarias', action: 'atualizar_dotacoes' },
			{ controller: 'contabilidade/solicitacao_de_alteracao_orcamentarias', action: 'confirmar_indeferir_alteracao' },
			{ controller: 'contabilidade/solicitacao_de_alteracao_orcamentarias', action: 'editar_subacoes_da_solicitacao' },
			{ controller: 'contabilidade/solicitacao_de_alteracao_orcamentarias', action: 'criar_alteracao_a_partir_do_decreto' },
			{ controller: 'contabilidade/solicitacao_de_alteracao_orcamentarias', action: 'atualizar_subacoes_da_solicitacao' },
			{ controller: 'contabilidade/solicitacao_de_alteracao_orcamentarias', action: 'alteracoes_por_dotacao' },
			{ controller: 'contabilidade/sub_elementos_de_despesa', action: 'adicionar_novo' },
			{ controller: 'contabilidade/sub_elementos_de_despesa', action: 'criar_novo' },
			{ controller: 'contabilidade/sub_elementos_de_despesa', action: 'contas_por_subelemento' },
			{ controller: 'contabilidade/obras', action: 'servicos' },
			{ controller: 'contabilidade/obras', action: 'enviar_para_sim' },
			{ controller: 'contabilidade/obras', action: 'editar_data_de_envio_pro_sim' },
			{ controller: 'contabilidade/obras', action: 'atualizar_data_de_envio_pro_sim' },
			{ controller: 'contabilidade/obras', action: 'duplicar' },
			{ controller: 'contabilidade/obras', action: 'nao_divulgar_obra' },
			{ controller: 'contabilidade/obras', action: 'divulgar_obra' },
			{ controller: 'contabilidade/obras', action: 'editar_prazos_pos_obra' },
			{ controller: 'contabilidade/obras', action: 'atualizar_prazos_pos_obra' },
			{ controller: 'contabilidade/obras', action: 'recuperar_dados_de_obra_via_contrato' },
			{ controller: 'contabilidade/obras', action: 'recuperar_contas_pcasp' },
			{ controller: 'contabilidade/obras', action: 'verificar_se_contrato_tem_obra_do_tipo_obra' },
			{ controller: 'contabilidade/obras', action: 'atualizar_estudos_e_projetos' },
			{ controller: 'contabilidade/obras', action: 'editar_estudos_e_projetos' },
			{ controller: 'contabilidade/relatorios/diarias', action: 'imprimir' },
			{ controller: 'contabilidade/relatorios/saldo_comprometido', action: 'imprimir' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'editar_itens_do_servico' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'atualizar_itens_do_servico' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'enviar_para_cef' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'liberar_pela_cef' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'confirmar' },
			{ controller: 'contabilidade/medicoes_da_obra', action: 'voltar_para_aberta' },
			{ controller: 'contabilidade/documentos_do_decreto', action: 'retorna_modelo' },
			{ controller: 'contabilidade/contas_extra_orcamentarias', action: 'editar_unidades' },
			{ controller: 'contabilidade/contas_extra_orcamentarias', action: 'atualizar_unidades' },
			{ controller: 'contabilidade/contas_extra_orcamentarias', action: 'movimentacoes_das_contas' },
			{ controller: 'contabilidade/contas_extra_orcamentarias', action: 'detalhamento_da_movimentacao' },
			{ controller: 'contabilidade/contas_extra_orcamentarias', action: 'retorna_receita_da_conta' },
			{ controller: 'contabilidade/taloes_de_receita', action: 'fontes_de_recursos' },
			{ controller: 'contabilidade/anulacoes_dos_taloes_de_receita', action: 'fontes_de_recursos'},
			{ controller: 'contabilidade/contas', action: 'retorna_dados_da_conta' },
			{ controller: 'contabilidade/contas', action: 'registros_contabeis' },
			{ controller: 'contabilidade/eventos_contabeis', action: 'lancamento_manual' },
			{ controller: 'contabilidade/eventos_contabeis', action: 'cria_lancamento_manual' },
			{ controller: 'contabilidade/eventos_contabeis', action: 'adiciona_dotacao'},
			{ controller: 'contabilidade/eventos_contabeis', action: 'salvar_dotacao'},
			{ controller: 'contabilidade/eventos_contabeis', action: 'atualiza_dotacao'},
			{ controller: 'contabilidade/eventos_contabeis', action: 'excluir_dotacao'},
			{ controller: 'contabilidade/eventos_contabeis', action: 'adiciona_receita'},
			{ controller: 'contabilidade/eventos_contabeis', action: 'salvar_receita'},
			{ controller: 'contabilidade/eventos_contabeis', action: 'atualiza_receita'},
			{ controller: 'contabilidade/eventos_contabeis', action: 'excluir_receita'},
			{ controller: 'contabilidade/documentos_da_liquidacao', action: 'retorna_modelo'},
			{ controller: 'contabilidade/documentos_da_liquidacao', action: 'excluir_receita'},
			{ controller: 'contabilidade/transferencias_financeiras', action: 'confirmar'},
			{ controller: 'contabilidade/cancelamentos_de_restos_a_pagar', action: 'empenhos_por_unidade_processados'},
			{ controller: 'contabilidade/cancelamentos_de_restos_a_pagar', action: 'empenhos_por_unidade_nao_processados'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'liquidacoes_restos_a_pagar'},
			{ controller: 'contabilidade/conselhos_de_rpps', action: 'extinguir_conselho'},
			{ controller: 'contabilidade/comites_de_investimento', action: 'extinguir_comite'},
			{ controller: 'contabilidade/cancelamentos_de_restos_a_pagar', action: 'enviar_para_contabilidade'},
			{ controller: 'contabilidade/cancelamentos_de_restos_a_pagar', action: 'confirmar_cancelamento'},
			{ controller: 'contabilidade/parcelamentos_do_rpps', action: 'dados_do_parcelamento_do_rpps'},
			{ controller: 'contabilidade/decretos', action: 'retorna_dados_da_legislacao'},
			{ controller: 'contabilidade/investimentos_do_rpps', action: 'retorna_saldo_inicial'},
			{ controller: 'contabilidade/aportes_despesas', action: 'retorna_tipos_de_aportes'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'liquidacoes_sem_folha_de_pagamento'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'liquidacoes_folha_de_pagamento'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'adicionar_contas_retencao'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'atualiza_contas_liquidacoes'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'editar_contas_liquidacoes'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'cadastrar_contas_retencao'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'atualiza_contas_do_grupo_da_retencao'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'editar_contas_do_grupo_da_retencao'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'pagar_liquido'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'pagar_retencoes'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'pagar_total'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'editar_conta_liquidacao'},
			{ controller: 'contabilidade/controle_de_pagamentos', action: 'atualiza_conta_liquidacao'},
			{ controller: 'contabilidade/lotes_bancarios', action: 'gerar_lotes'},
			{ controller: 'contabilidade/lotes_bancarios', action: 'gera_lote'},
			{ controller: 'contabilidade/lotes_bancarios', action: 'download'},
			{ controller: 'contabilidade/lotes_bancarios', action: 'gera_lotes'},
			{ controller: 'contabilidade/relatorios_da_contabilidade', action: 'create'},
			{ controller: 'contabilidade/relatorios_da_contabilidade', action: 'selecionar_relatorio'},
			{ controller: 'contabilidade/relatorios_da_contabilidade', action: 'imprimir'},
			{ controller: 'contabilidade/relatorios_da_contabilidade', action: 'imprimir'},
			{ controller: 'contabilidade/cancelamentos_de_restos_a_pagar', action: 'filtra_motivo_por_tipo_de_resto_a_pagar'},


			{ controller: 'controladoria/contratos', action: 'solicitacoes' },
			{ controller: 'controladoria/contratos', action: 'aditivos_pendentes' },
			{ controller: 'controladoria/documentos_do_processo', action: 'modelos' },
			{ controller: 'controladoria/documentos_do_processo', action: 'retorna_modelo' },
			{ controller: 'controladoria/liquidacoes', action: 'enviar_para_administrativo' },

			{ controller: 'empenhos', action: 'editar_itens' },
			{ controller: 'empenhos', action: 'confirmar_empenho' },
			{ controller: 'empenhos', action: 'enviar_para_copfin' },
			{ controller: 'empenhos', action: 'retornar_para_administrativo' },
			{ controller: 'empenhos', action: 'busca_itens' },
			{ controller: 'empenhos', action: 'adiciona_itens' },
			{ controller: 'empenhos', action: 'atualiza_itens' },
			{ controller: 'empenhos', action: 'editar_contas_bancarias_da_unidade' },
			{ controller: 'empenhos', action: 'atualiza_contas_bancarias_da_unidade' },
			{ controller: 'empenhos', action: 'retornar_para_solicitado' },
			{ controller: 'empenhos', action: 'atualiza_numero_do_empenho' },
			{ controller: 'empenhos', action: 'enviar_para_sim' },
			{ controller: 'empenhos', action: 'editar_data_de_envio_pro_sim' },
			{ controller: 'empenhos', action: 'atualizar_data_de_envio_pro_sim' },
			{ controller: 'empenhos', action: 'duplicar' },
			{ controller: 'empenhos', action: 'remover_todos_os_itens' },
			{ controller: 'empenhos', action: 'retorna_dados_do_empenho' },
			{ controller: 'empenhos', action: 'retorna_liquidacoes_confirmadas' },
			{ controller: 'empenhos', action: 'retorna_medicoes_da_obra' },
			{ controller: 'empenhos', action: 'retorna_contas_bancarias_do_pagamento' },
			{ controller: 'empenhos', action: 'enviar_para_administrativo' },
			{ controller: 'empenhos', action: 'show_resto_a_pagar' },
			{ controller: 'empenhos', action: 'retorna_complementos_por_fonte_do_empenho' },
			{ controller: 'empenhos', action: 'empenhos_por_orcamento' },
			{ controller: 'empenhos', action: 'configurar_unidade_orcamentaria'},
			{ controller: 'empenhos', action: 'configurar_fonte_de_recursos'},
			{ controller: 'empenhos', action: 'atualiza_unidade_do_empenho'},
			{ controller: 'empenhos', action: 'atualiza_fonte_do_empenho'},
			{ controller: 'empenhos', action: 'recebe_multiplos_empenhos'},
			{ controller: 'empenhos', action: 'lancamentos_do_empenhos'},
			{ controller: 'empenhos', action: 'retorna_novo_numero_de_empenho'},

			{ controller: 'licitacao/apostilamentos', action: 'editar_dotacoes' },
			{ controller: 'licitacao/apostilamentos', action: 'excluir_dotacao' },
			{ controller: 'licitacao/aditivos', action: 'editar_itens' },
			{ controller: 'licitacao/aditivos', action: 'editar_unidade_orcamentaria' },
			{ controller: 'licitacao/aditivos', action: 'editar_dotacoes' },
			{ controller: 'licitacao/aditivos', action: 'excluir_dotacao' },
			{ controller: 'licitacao/aditivos', action: 'enviar_para_sim' },
			{ controller: 'licitacao/aditivos', action: 'editar_data_de_envio_pro_sim' },
			{ controller: 'licitacao/aditivos', action: 'atualizar_data_de_envio_pro_sim' },
			{ controller: 'licitacao/aditivos', action: 'editar_itens_de_aditivo_de_mudanca'},
			{ controller: 'licitacao/aditivos', action: 'atualiza_itens_aditivo_de_mudanca'},
			{ controller: 'licitacao/aditivos', action: 'editar_marca_de_itens_do_aditivo'},
			{ controller: 'licitacao/aditivos', action: 'atualiza_marca_de_itens_aditivo'},
			{ controller: 'licitacao/aditivos', action: 'editar_itens_dotacao_do_aditivo'},
			{ controller: 'licitacao/aditivos', action: 'atualiza_itens_dotacao_do_aditivo'},
			{ controller: 'licitacao/aditivos', action: 'retorna_legislacoes' },
			{ controller: 'licitacao/aditivos', action: 'mostrar_alerta_artigo_57'},
			{ controller: 'licitacao/aditivos', action: 'enviar_para_controladoria'},
			{ controller: 'licitacao/aditivos', action: 'confirmar_controladoria'},
			{ controller: 'licitacao/atas_de_registro_de_precos', action: 'editar_contratos' },
			{ controller: 'licitacao/atas_de_registro_de_precos', action: 'importar_contratos' },
			{ controller: 'licitacao/atas_de_registro_de_precos', action: 'editar_unidades_orcamentarias' },
			{ controller: 'licitacao/atas_de_registro_de_precos', action: 'atualizar_unidades_orcamentarias' },
			{ controller: 'licitacao/atas_de_registro_de_precos', action: 'editar_itens' },
			{ controller: 'licitacao/atas_de_registro_de_precos', action: 'atualizar_itens' },
			{ controller: 'licitacao/atas_de_registro_de_precos', action: 'confirmar_ata' },
			{ controller: 'licitacao/atas_de_registro_de_precos', action: 'retornar_para_aberto' },
			{ controller: 'licitacao/atas_de_registro_de_precos', action: 'destroy' },
			{ controller: 'licitacao/contratos', action: 'confirmar_cancelamento' },
			{ controller: 'licitacao/contratos', action: 'editar_itens' },
			{ controller: 'licitacao/contratos', action: 'editar_dotacoes' },
			{ controller: 'licitacao/contratos', action: 'adicionar_dotacoes' },
			{ controller: 'licitacao/contratos', action: 'excluir_dotacao' },
			{ controller: 'licitacao/contratos', action: 'quantidade_de_itens_disponiveis' },
			{ controller: 'licitacao/contratos', action: 'enviar_para_sim' },
			{ controller: 'licitacao/contratos', action: 'retorna_modelo' },
			{ controller: 'licitacao/contratos', action: 'editar_data_de_envio_pro_sim' },
			{ controller: 'licitacao/contratos', action: 'atualizar_data_de_envio_pro_sim' },
			{ controller: 'licitacao/contratos', action: 'editar_operacoes' },
			{ controller: 'licitacao/contratos', action: 'atualizar_operacoes' },
			{ controller: 'licitacao/contratos', action: 'editar_acoes_das_operacoes' },
			{ controller: 'licitacao/contratos', action: 'atualizar_acoes_das_operacoes' },
			{ controller: 'licitacao/contratos', action: 'retornar_para_aberto' },
			{ controller: 'licitacao/contratos', action: 'editar_itens_dotacao_do_contrato' },
			{ controller: 'licitacao/contratos', action: 'atualiza_itens_dotacao_do_contrato' },
			{ controller: 'licitacao/contratos', action: 'editar_responsavel' },
			{ controller: 'licitacao/contratos', action: 'atualizar_responsavel' },
			{ controller: 'licitacao/contratos', action: 'retorna_dados_do_contrato' },
			{ controller: 'licitacao/contratos', action: 'editar_unidade_orcamentaria_do_exercicio' },
			{ controller: 'licitacao/contratos', action: 'atualizar_unidade_orcamentaria_do_exercicio' },
			{ controller: 'licitacao/contratos', action: 'solicitacoes' },
			{ controller: 'licitacao/documentos_do_pedido', action: 'modelos' },
			{ controller: 'licitacao/documentos_da_cotacao_do_pedido', action: 'modelos' },
			{ controller: 'licitacao/documentos_da_cotacao_do_pedido', action: 'retorna_modelo' },
			{ controller: 'licitacao/documentos_do_processo', action: 'modelos' },
			{ controller: 'licitacao/documentos_do_processo', action: 'retorna_modelo' },
			{ controller: 'licitacao/documentos_do_processo', action: 'atualiza_parecer' },
			{ controller: 'licitacao/documentos_do_processo', action: 'receber_parecer_no_setor_juridico' },
			{ controller: 'licitacao/documentos_do_processo', action: 'devolver_parecer' },
			{ controller: 'licitacao/documentos_do_contrato', action: 'retorna_modelo' },
			{ controller: 'licitacao/documentos_do_aditivo', action: 'modelos' },
			{ controller: 'licitacao/documentos_do_aditivo', action: 'retorna_modelo' },
			{ controller: 'licitacao/documentos_do_apostilamento', action: 'modelos' },
			{ controller: 'licitacao/documentos_do_apostilamento', action: 'retorna_modelo' },
			{ controller: 'licitacao/documentos_da_ata', action: 'retorna_modelo' },
			{ controller: 'licitacao/documentos_da_ata', action: 'modelos' },
			{ controller: 'licitacao/lotes', action: 'confirmar_anulacao_item' },
			{ controller: 'licitacao/lotes', action: 'define_ganhador' },
			{ controller: 'licitacao/lotes', action: 'salvar_ganhador' },
			{ controller: 'licitacao/lotes', action: 'salvar_ganhador_menor_preco' },
			{ controller: 'licitacao/lotes', action: 'lotes_por_ganhador' },
			{ controller: 'licitacao/lotes', action: 'lotes_por_projeto' },
			{ controller: 'licitacao/lotes', action: 'desertar_lote' },
			{ controller: 'licitacao/lotes', action: 'fracassar_lote' },
			{ controller: 'licitacao/lotes', action: 'excluir_rodada_de_lances' },
			{ controller: 'licitacao/lotes', action: 'editar_itens' },
			{ controller: 'licitacao/lotes', action: 'alterar_lotes' },
			{ controller: 'licitacao/lances', action: 'anular_lance' },
			{ controller: 'licitacao/pedidos', action: 'adiciona_pessoas' },
			{ controller: 'licitacao/pedidos', action: 'busca_pessoas' },
			{ controller: 'licitacao/pedidos', action: 'atualizar_justificativa_da_cotacao' },
			{ controller: 'licitacao/pedidos', action: 'atualizar_responsavel_setor_de_compras' },
			{ controller: 'licitacao/pedidos', action: 'atualizar_itens' },
			{ controller: 'licitacao/pedidos', action: 'adiciona_itens' },
			{ controller: 'licitacao/pedidos', action: 'busca_itens' },
			{ controller: 'licitacao/pedidos', action: 'atualizar_quantidades' },
			{ controller: 'licitacao/pedidos', action: 'zera_quantidade_do_item_da_unidade' },
			{ controller: 'licitacao/pedidos', action: 'zera_valor_previsto_do_item_da_unidade' },
			{ controller: 'licitacao/pedidos', action: 'remove_unidade_e_seus_itens' },
			{ controller: 'licitacao/pedidos', action: 'atualizar_pessoas' },
			{ controller: 'licitacao/pedidos', action: 'atualizar_unidades_orcamentarias' },
			{ controller: 'licitacao/pedidos', action: 'coletar_precos' },
			{ controller: 'licitacao/pedidos', action: 'abrir_para_outras_unidades' },
			{ controller: 'licitacao/pedidos', action: 'editar_quantidades' },
			{ controller: 'licitacao/pedidos', action: 'preco' },
			{ controller: 'licitacao/pedidos', action: 'anular_preco' },
			{ controller: 'licitacao/pedidos', action: 'convidar' },
			{ controller: 'licitacao/pedidos', action: 'enviar_cotacao_externo' },
			{ controller: 'licitacao/pedidos', action: 'finalizar_pedido' },
			{ controller: 'licitacao/pedidos', action: 'voltar_para_aberto' },
			{ controller: 'licitacao/pedidos', action: 'mapa' },
			{ controller: 'licitacao/pedidos', action: 'atualizar_data_do_mapa' },
			{ controller: 'licitacao/pedidos', action: 'editar_data_do_mapa' },
			{ controller: 'licitacao/pedidos', action: 'confirmar_cancelamento' },
			{ controller: 'licitacao/pedidos', action: 'editar_itens' },
			{ controller: 'licitacao/pedidos', action: 'editar_pessoas' },
			{ controller: 'licitacao/pedidos', action: 'editar_unidades_orcamentarias' },
			{ controller: 'licitacao/pedidos', action: 'motivo_anular_cotacao' },
			{ controller: 'licitacao/pedidos', action: 'reativar_cotacao' },
			{ controller: 'licitacao/pedidos', action: 'motivo_anular_item' },
			{ controller: 'licitacao/pedidos', action: 'reativar_item_da_cotacao' },
			{ controller: 'licitacao/pedidos', action: 'arquivo_itens_do_pedido' },
			{ controller: 'licitacao/pedidos', action: 'duplicar' },
			{ controller: 'licitacao/pedidos', action: 'selecionar_dotacao' },
			{ controller: 'licitacao/pedidos', action: 'atualiza_dotacao' },
			{ controller: 'licitacao/pedidos', action: 'adicionar_dotacao' },
			{ controller: 'licitacao/pedidos', action: 'excluir_dotacao' },
			{ controller: 'licitacao/pedidos', action: 'cadastrar_transferencia_do_orcamento' },
			{ controller: 'licitacao/pedidos', action: 'transferir_orcamento' },
			{ controller: 'licitacao/projetos', action: 'retorna_modalidades_de_licitacao' },
			{ controller: 'licitacao/projetos', action: 'retorna_criterios_de_julgamento' },
			{ controller: 'licitacao/projetos', action: 'confirmar_cancelamento' },
			{ controller: 'licitacao/projetos', action: 'selecionar_dotacao' },
			{ controller: 'licitacao/projetos', action: 'atualiza_dotacao' },
			{ controller: 'licitacao/projetos', action: 'excluir_dotacao' },
			{ controller: 'licitacao/projetos', action: 'editar_operacoes' },
			{ controller: 'licitacao/projetos', action: 'atualizar_operacoes' },
			{ controller: 'licitacao/projetos', action: 'editar_acoes_das_operacoes' },
			{ controller: 'licitacao/projetos', action: 'atualizar_acoes_das_operacoes' },
			{ controller: 'licitacao/projetos', action: 'deleta_processo' },
			{ controller: 'licitacao/projetos', action: 'editar_itens_dotacao_do_projeto' },
			{ controller: 'licitacao/projetos', action: 'atualiza_itens_dotacao_do_projeto' },
			{ controller: 'licitacao/projetos', action: 'retorna_dados_do_processo' },
			{ controller: 'licitacao/projetos', action: 'arquivo' },
			{ controller: 'licitacao/projetos', action: 'arquivo_itens_do_lote' },
			{ controller: 'licitacao/projetos', action: 'confirmar_revogacao' },
			{ controller: 'licitacao/projetos', action: 'revogar' },
			{ controller: 'licitacao/projetos', action: 'retorna_legislacoes' },
			{ controller: 'licitacao/projetos', action: 'retorna_criterios_de_julgamento_14133' },
			{ controller: 'licitacao/projetos', action: 'retorna_modalidades_de_licitacao_14133' },

			{ controller: 'licitacao/processos', action: 'confirmar_cancelamento' },
			{ controller: 'licitacao/processos', action: 'iniciar_processo' },
			{ controller: 'licitacao/processos', action: 'editar_licitantes' },
			{ controller: 'licitacao/processos', action: 'atualizar_licitantes' },
			{ controller: 'licitacao/processos', action: 'editar_dados_do_sim' },
			{ controller: 'licitacao/processos', action: 'atualizar_dados_do_sim' },
			{ controller: 'licitacao/processos', action: 'homologar' },
			{ controller: 'licitacao/processos', action: 'fornecedores' },
			{ controller: 'licitacao/processos', action: 'contratos' },
			{ controller: 'licitacao/processos', action: 'caronas' },
			{ controller: 'licitacao/processos', action: 'ir_para_sessao' },
			{ controller: 'licitacao/processos', action: 'concluir_sessao' },
			{ controller: 'licitacao/processos', action: 'abrir_recurso' },
			{ controller: 'licitacao/processos', action: 'enviar_para_parecer' },
			{ controller: 'licitacao/processos', action: 'unidades_orcamentarias' },
			{ controller: 'licitacao/processos', action: 'ganhadores_dos_lotes' },
			{ controller: 'licitacao/processos', action: 'enviar_para_sim' },
			{ controller: 'licitacao/processos', action: 'busca_licitantes' },
			{ controller: 'licitacao/processos', action: 'adiciona_licitantes' },
			{ controller: 'licitacao/processos', action: 'voltar_para_aberto' },
			{ controller: 'licitacao/processos', action: 'deleta_processo' },
			{ controller: 'licitacao/processos', action: 'editar_data_de_adjudicacao' },
			{ controller: 'licitacao/processos', action: 'atualiza_data_de_adjudicacao' },
			{ controller: 'licitacao/processos', action: 'editar_data_da_homologacao' },
			{ controller: 'licitacao/processos', action: 'atualiza_data_da_homologacao' },
			{ controller: 'licitacao/processos', action: 'confirmar_revogacao' },
			{ controller: 'licitacao/processos', action: 'revogar' },
			{ controller: 'licitacao/processos', action: 'voltar_para_fase_de_lances' },
			{ controller: 'licitacao/processos', action: 'voltar_para_enviado_para_comissao' },

			{ controller: 'licitacao/pessoas_do_pedido', action: 'show_cotacao' },
			{ controller: 'licitacao/pessoas_do_pedido', action: 'enviar_email_cotacao_externa' },
			{ controller: 'licitacao/ordens_de_compra', action: 'editar_itens' },
			{ controller: 'licitacao/ordens_de_compra', action: 'atualiza_itens' },
			{ controller: 'licitacao/ordens_de_compra', action: 'recusar' },
			{ controller: 'licitacao/ordens_de_compra', action: 'enviar_ordem_de_compra_por_email' },
			{ controller: 'licitacao/ordens_de_compra', action: 'recusar_recebimento' },
			{ controller: 'licitacao/ordens_de_compra', action: 'listar_itens_da_ordem_de_compra' },
			{ controller: 'licitacao/ordens_de_compra', action: 'liberar_saldo_dos_itens' },
			{ controller: 'licitacao/ordens_de_compra', action: 'cadastro_por_index'},
			{ controller: 'licitacao/ordens_de_compra', action: 'retornar_para_administrativo'},
			{ controller: 'licitacao/pessoas_do_projeto_do_lote', action: 'inabilita' },
			{ controller: 'licitacao/pessoas_do_projeto_do_lote', action: 'edita_justificativa' },
			{ controller: 'licitacao/pessoas_do_projeto_do_lote', action: 'excluir_ganhador' },
			{ controller: 'licitacao/relatorios/projetos', action: 'imprimir' },
			{ controller: 'licitacao/relatorios/contratos', action: 'imprimir' },
			{ controller: 'licitacao/relatorios/aditivos', action: 'imprimir' },
			{ controller: 'licitacao/relatorios/apostilamentos', action: 'imprimir' },
			{ controller: 'licitacao/relatorios/atas_de_registro_de_precos', action: 'imprimir' },
			{ controller: 'licitacao/relatorios/ordens_de_compra', action: 'imprimir' },
			{ controller: 'licitacao/pessoas_do_projeto', action: 'justificativa_descredenciamento' },
			{ controller: 'licitacao/pessoas_do_projeto', action: 'recredenciar' },
			{ controller: 'licitacao/pessoas_do_projeto', action: 'justificativa_desclassificacao' },
			{ controller: 'licitacao/pessoas_do_projeto', action: 'anular_lote' },
			{ controller: 'licitacao/pessoas_do_projeto', action: 'reverter_anulacao_lote' },
			{ controller: 'licitacao/pessoas_do_projeto', action: 'deleta_pessoa_do_projeto' },
			{ controller: 'licitacao/ocorrencias', action: 'baseline' },
			{ controller: 'licitacao/importacoes_tcm_processos', action: 'editar_contratos' },
			{ controller: 'licitacao/importacoes_tcm_processos', action: 'atualizar_contratos' },
			{ controller: 'licitacao/importacoes_tcm_processos', action: 'marcar_para_importacao' },
			{ controller: 'licitacao/importacoes_tcm_processos', action: 'desmarcar_para_importacao' },
			{ controller: 'licitacao/importacoes_tcm_processos', action: 'importar_tudo' },
			{ controller: 'licitacao/comissoes', action: 'retorna_comissoes' },
			{ controller: 'licitacao/aditivos_da_ata', action: 'editar_itens' },
			{ controller: 'licitacao/aditivos_da_ata', action: 'atualiza_itens' },
			{ controller: 'licitacao/aditivos_da_ata', action: 'confirmar' },
			{ controller: 'licitacao/aditivos_da_ata', action: 'voltar_etapa' },
			{ controller: 'licitacao/aditivos', action: 'confirmar' },
			{ controller: 'licitacao/aditivos', action: 'voltar_etapa' },


			{ controller: 'gestao_de_estoque/almoxarifados', action: 'adicionar_todas_as_unidades_do_almoxarifado' },
			{ controller: 'gestao_de_estoque/almoxarifados', action: 'almoxarifados_por_unidades_orcamentarias' },
			{ controller: 'gestao_de_estoque/almoxarifados', action: 'retorna_almoxarifado_por_empenho'},

			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'listar_todos_os_itens_do_recebimento_de_material' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'tornar_definitivo' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'listar_itens_do_recebimento_por_codigo' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'recebimento_de_materiais_por_unidade_orcamentaria_e_almoxarifado' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'atualiza_informacoes_adicionais' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'adicionar_informacoes_adicionais' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'devolver_ao_fornecedor' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'fechar' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'editar_itens_do_recebimento_de_materiais' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'receber_parcialmente' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'atualiza_itens_do_recebimento_de_materiais' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'reabrir' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'receber' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'confirmar_multiplos_recebimentos' },
			{ controller: 'gestao_de_estoque/recebimento_de_materiais', action: 'remoto' },

			{ controller: 'gestao_de_estoque/comissoes', action: 'extinguir_comissao' },
			{ controller: 'gestao_de_estoque/membros_da_comissao', action: 'extinguir_membro' },

			{ controller: "gestao_de_estoque/estoques", action: 'por_almoxarifado'},
			{ controller: "gestao_de_estoque/estoques", action: 'exibir_por_almoxarifado'},
			{ controller: "gestao_de_estoque/estoques", action: 'estoque_especifico'},

			{ controller: 'loa/acoes', action: 'proximo_codigo', format: 'json' },
			{ controller: 'loa/orcamentos_da_despesa', action: 'index' },
			{ controller: 'loa/subacoes', action: 'subacoes_por_unidade_orcamentaria' },
			{ controller: 'loa/unidades_orcamentarias', action: 'editar_unidades_vinculada' },
			{ controller: 'loa/unidades_orcamentarias', action: 'atualizar_unidades_vinculada' },

			{ controller: 'orcamentos', action: 'configuracoes_eventos_contabeis_update' },
			{ controller: 'orcamentos', action: 'busca_por_projecao_de_receita' },

			{ controller: 'ppa/convenios', action: 'imprimir_resumo_de_previsao_de_convenios' },
			{ controller: 'ppa/convenios', action: 'relatorio_por_classificacao_da_receita_status_e_ano' },
			{ controller: 'ppa/iniciativas', action: 'proximo_codigo', format: 'json' },
			{ controller: 'ppa/micro_regioes', action: 'index' },
			{ controller: 'ppa/orgaos', action: 'relatorio_por_orgao' },
			{ controller: 'ppa/ppas', action: 'download_contexto' },
			{ controller: 'ppa/ppas', action: 'destroy' },
			{ controller: 'ppa/ppas', action: 'enviar_para_votacao' },
			{ controller: 'ppa/programas', action: 'proximo_codigo', format: 'json' },
			{ controller: 'ppa/propostas', action: 'enviar_email_com_status_atual_da_proposta' },
			{ controller: 'ppa/propostas', action: 'imprimir' },
			{ controller: 'ppa/propostas', action: 'create_interna' },
			{ controller: 'ppa/propostas', action: 'update_interna' },
			{ controller: 'ppa/propostas', action: 'update_status' },
			{ controller: 'ppa/propostas', action: 'imprimir_resultado_geral_das_propostas' },
			{ controller: 'ppa/propostas', action: 'imprimir_total_de_votos_das_propostas' },
			{ controller: 'ppa/relatorios/impressao_de_ppa', action: 'imprimir_ppa' },
			{ controller: 'ppa/relatorios/impressao_de_ppa', action: 'dados_do_relatorio_de_criticas' },
			{ controller: 'ppa/relatorios/impressao_de_ppa', action: 'gerar_capa' },
			{ controller: 'ppa/relatorios/impressao_de_ppa', action: 'salvar_capa' },
			{ controller: 'ppa/relatorios/impressao_de_ppa', action: 'preparar_impressao_ppa' },
			{ controller: 'ppa/relatorios/impressao_de_ppa', action: 'prepara_impressao_graficos' },
			{ controller: 'ppa/relatorios/impressao_de_ppa', action: 'dados_do_relatorio_de_criticas' },
			{ controller: 'ppa/sub_areas_tematicas', action: 'index' },
			{ controller: 'ppa/sub_funcoes', action: 'index' },
			{ controller: 'ppa/unidades_orcamentarias', action: 'index' },

			{ controller: 'projecao/projecoes_de_receitas', action: 'new_copiar_calculos_de_projecoes' },
			{ controller: 'projecao/projecoes_de_receitas', action: 'copiar_calculos_de_projecoes' },
			{ controller: 'projecao/projecoes_de_receitas', action: 'notas_explicativas' },
			{ controller: 'projecao/receitas', action: 'detalhar_classificacao' },
			{ controller: 'projecao/receitas', action: 'detalhar_nova_classificacao' },
			{ controller: 'projecao/receitas', action: 'atualizar_calculos_por_exercicio' },
			{ controller: 'projecao/receitas', action: 'atualizar_calculos_por_exercicio_projecao' },
			{ controller: 'projecao/receitas', action: 'quadro_de_projecao' },
			{ controller: 'projecao/receitas', action: 'quadro_de_projecao_por_categoria_economica' },

			{ controller: 'tcm/lotes', action: 'download_arquivos_do_lote' },
			{ controller: 'tcm/relatorios/lotes', action: 'imprimir' },

			{ controller: 'relatorios_gerais', action: 'new' },
			{ controller: 'relatorios_gerais', action: 'imprimir' },

			{ controller: 'obra/relatorios/obras', action: 'imprimir' },
			{ controller: 'obra/documentos_da_obra', action: 'modelos' },
			{ controller: 'obra/documentos_da_obra', action: 'retorna_modelo' },
			{ controller: 'obra/ordens_de_servico', action: 'contratos' },
			{ controller: 'obra/ordens_de_servico', action: 'empenhos_do_contrato' },
			{ controller: 'obra/ordens_de_servico', action: 'obter_obras_ou_servicos' },
			{ controller: 'obra/ordens_de_servico', action: 'obter_dados_da_obra' },
			{ controller: 'obra/fiscalizacoes', action: 'engenheiros_da_obra' },
			{ controller: 'obra/fiscalizacoes', action: 'editar_fotos' },
			{ controller: 'obra/fiscalizacoes', action: 'adiciona_fotos' },
			{ controller: 'obra/fiscalizacoes', action: 'medicoes_da_obra' },
			{ controller: 'obra/fiscalizacoes', action: 'menu_de_fiscalizacoes' },
			{ controller: 'obra/garantias_da_obra', action: 'devolver' },
			{ controller: 'obra/garantias_da_obra', action: 'retornar_para_aberta' },
			{ controller: 'obra/transferencias', action: 'retorna_obras_por_unidade_orcamentaria' },
			{ controller: 'obra/transferencias', action: 'retorna_contas_bancarias_por_unidade_orcamentaria' },
			{ controller: 'obra/transferencias', action: 'retorna_modalidades' },
			{ controller: 'obra/transferencias', action: 'prestar_conta' },
			{ controller: 'obra/transferencias', action: 'nao_prestou_conta' },
			{ controller: 'obra/pre_convenios', action: 'gerar_convenio' },
			{ controller: 'obra/fotos_da_fiscalizacao', action: 'show' },
			{ controller: 'obra/pre_convenios', action: 'editar_fontes' },
			{ controller: 'obra/pre_convenios', action: 'adiciona_fontes' },
			{ controller: 'obra/operacoes_de_credito', action: 'altera_status' },
			{ controller: 'obra/servicos_da_obra', action: 'index' },
			{ controller: 'obra/servicos_da_obra', action: 'show' },
			{ controller: 'obra/servicos_da_obra', action: 'destroy' },
			{ controller: 'obra/componentes_da_operacao_de_credito', action: 'index' },
			{ controller: 'obra/componentes_da_operacao_de_credito', action: 'show' },
			{ controller: 'obra/componentes_da_operacao_de_credito', action: 'destroy' },
			{ controller: 'obra/componentes_da_operacao_de_credito', action: 'componentes_da_operacao_de_credito' },
			{ controller: 'obra/componentes_da_operacao_de_credito', action: 'acoes_das_operacoes' },
			{ controller: 'obra/inicio', action: 'index_obras_alertas' },
			{ controller: 'obra/inicio', action: 'index_convenios_alertas' },

			{ controller: 'obra/diarios_de_obra', action: 'editar_equipamentos' },
			{ controller: 'obra/diarios_de_obra', action: 'atualizar_equipamentos' },
			{ controller: 'obra/diarios_de_obra', action: 'editar_maos_de_obra' },
			{ controller: 'obra/diarios_de_obra', action: 'atualizar_maos_de_obra' },
			{ controller: 'obra/diarios_de_obra', action: 'editar_atividades' },
			{ controller: 'obra/diarios_de_obra', action: 'atualizar_atividades' },
			{ controller: 'obra/diarios_de_obra', action: 'editar_fotos' },
			{ controller: 'obra/diarios_de_obra', action: 'atualizar_fotos' },
			{ controller: 'obra/relatorios/diarios_de_obra', action: 'imprimir' },
			{ controller: 'unidades_de_medida', action: 'esconder_unidade' },
			{ controller: 'contabilidade/relatorios/cancelamentos_de_restos_a_pagar', action: 'imprimir'},

			{ controller: 'patrimonio/recebimentos_de_bens', action: 'atualiza_itens_do_recebimento_de_bem'},
			{ controller: 'patrimonio/recebimentos_de_bens', action: 'cadastra_dados_extras_do_bem'},
			{ controller: 'controladoria/centro_de_custos', action: 'atualiza_responsaveis_do_centro_de_custos'}
		]

		rotas = Rails.application.routes.routes.map{ |r| r.defaults }.group_by{ |r| r[:controller] }
		rotas.each do |controller_path, actions|
			next if controller_path.blank? || skipped_controllers.include?( controller_path )

			describe "Controller #{controller_path}" do
				actions.each do |action|
					next if skipped_actions.include?( action )
					nome_da_acao = alias_da_acao[action[:action]] || action[:action]

					it "deve ter a ação '#{nome_da_acao}' cadastrada para o controller '#{controller_path}'" do
						controle = Acesso::Controle.find_by( nome_do_controle: controller_path )
						acao = Acesso::Acao.find_by( controle_id: controle.id, nome_da_acao: nome_da_acao )
						expect( acao ).to be_persisted
					end
				end
			end
		end
	end
end
