Correção de itens que estão fora do plano valores no dash principal

This commit is contained in:
2026-08-24 16:26:27 -03:00
parent 04b78bc7de
commit 94bbe7556f
10 changed files with 403 additions and 48 deletions

View File

@@ -218,3 +218,66 @@ RSpec.describe 'Dashboard — aba Consolidado do ranking de motoristas', type: :
expect(painel_consolidado).to include('Nenhuma consolidação finalizada neste período')
end
end
# Tela "Entregas em aberto" — o que há por trás do card "N pendentes".
#
# Em aberto = nem concluída nem falhada, pela data PLANEJADA (é o único recorte
# sem checkout). Tem que usar o MESMO recorte do card, senão o número do
# dashboard leva a uma lista que não bate com ele.
RSpec.describe 'Dashboard — entregas em aberto', type: :request do
include_context 'espelho de rastreio'
let(:inicio) { '2026-08-01' }
let(:fim) { '2026-08-14' }
before { sign_in create(:gerente) }
def abrir_pendentes
get dashboard_pendentes_path, params: { inicio: inicio, fim: fim }
expect(response).to have_http_status(:ok)
response.body
end
it 'lista só o que está em aberto dentro do período' do
semear([
# Em aberto no período — a única que deve aparecer.
{ reference_id: 85_382, driver: nil, status: 'pending',
planned_date: Time.zone.local(2026, 8, 3, 8, 0), checkout: nil },
# Fechadas: não são "em aberto", mesmo planejadas no período.
{ reference_id: 85_383, driver: 'CARLOS', status: 'completed',
planned_date: Time.zone.local(2026, 8, 4, 8, 0), checkout: Time.zone.local(2026, 8, 4, 10, 0) },
{ reference_id: 85_384, driver: 'CARLOS', status: 'failed',
planned_date: Time.zone.local(2026, 8, 5, 8, 0), checkout: Time.zone.local(2026, 8, 5, 10, 0) },
# Em aberto, mas planejada FORA do período.
{ reference_id: 85_385, driver: nil, status: 'pending',
planned_date: Time.zone.local(2026, 9, 2, 8, 0), checkout: nil }
])
corpo = abrir_pendentes
expect(corpo).to include('85382')
expect(corpo).not_to include('85383')
expect(corpo).not_to include('85384')
expect(corpo).not_to include('85385')
end
# Sem nenhuma tabela gade_entregas_* no banco de teste, toda NF é "fora da
# operação" — que é exatamente o caso real da NF 85382 que motivou a tela.
it 'marca a NF que não está em nenhuma planilha de operação' do
semear([{ reference_id: 85_382, driver: nil, status: 'pending',
planned_date: Time.zone.local(2026, 8, 3, 8, 0), checkout: nil }])
expect(abrir_pendentes).to include('fora da operação')
end
it 'o card do dashboard aponta para esta tela com o mesmo período' do
create(:configuracao, chave: 'preco_entrega', valor: '10.0')
semear([{ reference_id: 85_382, driver: nil, status: 'pending',
planned_date: Time.zone.local(2026, 8, 3, 8, 0), checkout: nil }])
get dashboard_path, params: { inicio: inicio, fim: fim }
# O href sai HTML-escapado (&) e a ordem dos params varia — confere o
# caminho e o período separadamente.
expect(response.body).to include(dashboard_pendentes_path)
expect(response.body).to match(%r{/dashboard/pendentes\?[^"]*inicio=2026-08-01})
end
end