83 lines
2.7 KiB
Ruby
83 lines
2.7 KiB
Ruby
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
|