Correção de horario e implantação da geração de Romaneio
This commit is contained in:
82
spec/requests/admin/romaneios_spec.rb
Normal file
82
spec/requests/admin/romaneios_spec.rb
Normal 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
|
||||
Reference in New Issue
Block a user