Correção de horario e implantação da geração de Romaneio

This commit is contained in:
2026-08-27 16:21:56 -03:00
parent a0aafe62fc
commit ad1a071e4b
51 changed files with 3450 additions and 46 deletions

View File

@@ -0,0 +1,82 @@
require 'rails_helper'
RSpec.describe 'Admin::Romaneios', type: :request do
let(:romaneio) { create(:romaneio) }
describe 'permissão' do
it 'exige login' do
get admin_romaneios_path
expect(response).to redirect_to(new_user_session_path)
end
it 'bloqueia operador (não tem admin.romaneio por padrão)' do
sign_in create(:operador)
get admin_romaneios_path
expect(response).to have_http_status(:redirect)
expect(flash[:alert]).to match(/permissão/i)
end
it 'libera gerente' do
sign_in create(:gerente)
get admin_romaneios_path
expect(response).to have_http_status(:ok)
end
end
describe 'GET #pdf' do
before do
create(:romaneio_linha, romaneio: romaneio, veiculo: 'GADE_001')
sign_in create(:admin)
end
it 'sai INLINE quando um veículo é pedido — é a prévia do editor' do
get pdf_admin_romaneio_path(romaneio, veiculo: 'GADE_001')
expect(response.media_type).to eq('application/pdf')
expect(response.headers['Content-Disposition']).to match(/inline/)
end
it 'sai como download quando nenhum veículo é pedido' do
get pdf_admin_romaneio_path(romaneio)
expect(response.headers['Content-Disposition']).to match(/attachment/)
end
end
describe 'PATCH #atualizar_linha' do
let(:linha) { create(:romaneio_linha, romaneio: romaneio, telefones: '(11) 1111-1111') }
before { sign_in create(:admin) }
it 'grava o campo e o marca como editado' do
patch atualizar_linha_admin_romaneio_path(romaneio),
params: { linha_id: linha.id, campo: 'telefones', valor: '(11) 99999-0000' },
as: :json
expect(response.parsed_body['valor']).to eq('(11) 99999-0000')
expect(response.parsed_body['editado']).to be(true)
expect(linha.reload.campos_editados).to include('telefones')
end
it 'com valor null restaura o que o plano trouxe e destrava o campo' do
patch atualizar_linha_admin_romaneio_path(romaneio),
params: { linha_id: linha.id, campo: 'telefones', valor: '(11) 99999-0000' }, as: :json
patch atualizar_linha_admin_romaneio_path(romaneio),
params: { linha_id: linha.id, campo: 'telefones', valor: nil }, as: :json
expect(linha.reload.telefones).to eq('(11) 1111-1111')
expect(linha.campos_editados).to be_empty
end
it 'recusa campo fora da whitelist — veiculo e ordem são a verdade do roteiro' do
patch atualizar_linha_admin_romaneio_path(romaneio),
params: { linha_id: linha.id, campo: 'veiculo', valor: 'GADE_999' }, as: :json
expect(response).to have_http_status(:unprocessable_entity)
expect(linha.reload.veiculo).not_to eq('GADE_999')
end
end
end