Criação da visão geral da consolidação por motorista e Estilização
This commit is contained in:
@@ -14,9 +14,9 @@ RSpec.describe 'Painel do motorista — contabilização das entregas sem sucess
|
||||
include ActiveSupport::Testing::TimeHelpers
|
||||
include_context 'espelho de rastreio'
|
||||
|
||||
# O painel não aceita filtro de período (é sempre "do dia 1º até hoje"), então
|
||||
# congelamos a data: sem isso o spec quebraria sozinho ao rodar no dia 1º, com
|
||||
# as datas semeadas caindo fora do mês corrente.
|
||||
# O painel abre no MÊS CORRENTE (a estimativa vai até hoje), então congelamos a
|
||||
# data: sem isso o spec quebraria sozinho ao rodar no dia 1º, com as datas
|
||||
# semeadas caindo fora do mês corrente.
|
||||
let(:hoje) { Date.new(2026, 8, 20) }
|
||||
let(:preco) { 10.0 }
|
||||
let(:nome) { 'JOSE DA SILVA' }
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
require 'rails_helper'
|
||||
|
||||
# Rotas do relatório "total por motorista": quem entra, o que a tela mostra e o
|
||||
# PDF. O drill-down (?motorista=) é o que responde "de onde vem esse valor".
|
||||
RSpec.describe 'Totais por motorista', type: :request do
|
||||
# Modo de visualização "Por motorista" (/consolidacoes?visao=motoristas) e o
|
||||
# painel do motorista: quem entra, o que a tela soma e o drill-down que responde
|
||||
# "de onde vem esse valor".
|
||||
RSpec.describe 'Visão por motorista', type: :request do
|
||||
def consolidacao_finalizada(motorista:, valor:, nome: 'Fechamento Junho')
|
||||
c = create(:consolidacao, nome: nome, status: :finalizada,
|
||||
data_inicio: Date.new(2026, 6, 1), data_fim: Date.new(2026, 6, 30))
|
||||
@@ -13,39 +14,49 @@ RSpec.describe 'Totais por motorista', type: :request do
|
||||
|
||||
let(:periodo) { { inicio: '2026-06-01', fim: '2026-06-30' } }
|
||||
|
||||
describe 'admin — /consolidacoes/totais' do
|
||||
it 'exige login' do
|
||||
get totais_consolidacoes_path
|
||||
expect(response).to redirect_to(new_user_session_path)
|
||||
end
|
||||
|
||||
describe 'admin — /consolidacoes?visao=motoristas' do
|
||||
it 'bloqueia motorista (Pundit)' do
|
||||
sign_in create(:motorista)
|
||||
get totais_consolidacoes_path
|
||||
get consolidacoes_path(visao: 'motoristas')
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
|
||||
it 'mostra o total do motorista no período' do
|
||||
it 'soma o total do motorista no período' do
|
||||
consolidacao_finalizada(motorista: 'Carlos', valor: 120.0)
|
||||
sign_in create(:gerente)
|
||||
|
||||
get totais_consolidacoes_path(periodo)
|
||||
get consolidacoes_path(periodo.merge(visao: 'motoristas'))
|
||||
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(response.body).to include('Carlos')
|
||||
expect(response.body).to include('R$ 120,00')
|
||||
end
|
||||
|
||||
it 'abre a composição do motorista clicado' do
|
||||
it 'só abre a composição do motorista clicado' do
|
||||
consolidacao_finalizada(motorista: 'Carlos', valor: 120.0, nome: 'Fechamento Junho')
|
||||
consolidacao_finalizada(motorista: 'Pedro', valor: 90.0, nome: 'Fechamento do Pedro')
|
||||
sign_in create(:gerente)
|
||||
|
||||
get consolidacoes_path(periodo.merge(visao: 'motoristas'))
|
||||
expect(response.body).not_to include('O que forma esse valor')
|
||||
|
||||
get consolidacoes_path(periodo.merge(visao: 'motoristas', detalhe: 'Carlos'))
|
||||
expect(response.body).to include('O que forma esse valor')
|
||||
expect(response.body).to include('Fechamento Junho')
|
||||
expect(response.body).not_to include('Fechamento do Pedro')
|
||||
end
|
||||
|
||||
it 'a visão lista continua sendo o padrão' do
|
||||
consolidacao_finalizada(motorista: 'Carlos', valor: 120.0, nome: 'Fechamento Junho')
|
||||
sign_in create(:gerente)
|
||||
|
||||
get totais_consolidacoes_path(periodo.merge(motorista: 'Carlos'))
|
||||
get consolidacoes_path
|
||||
|
||||
expect(response.body).to include('Composição de Carlos')
|
||||
expect(response.body).to include('Fechamento Junho')
|
||||
expect(response.body).not_to include('Total do período')
|
||||
end
|
||||
|
||||
it 'gera o PDF' do
|
||||
it 'gera o PDF do período' do
|
||||
consolidacao_finalizada(motorista: 'Carlos', valor: 120.0)
|
||||
sign_in create(:gerente)
|
||||
|
||||
@@ -56,17 +67,18 @@ RSpec.describe 'Totais por motorista', type: :request do
|
||||
end
|
||||
end
|
||||
|
||||
describe 'motorista — /motorista/totais' do
|
||||
it 'mostra só o total dele e as consolidações que o compõem' do
|
||||
describe 'motorista — painel' do
|
||||
it 'mostra o total fechado do período e os fechamentos que o compõem' do
|
||||
motorista = create(:motorista, nome: 'Carlos')
|
||||
consolidacao_finalizada(motorista: 'Carlos', valor: 120.0, nome: 'Fechamento Junho')
|
||||
consolidacao_finalizada(motorista: 'Pedro', valor: 999.0, nome: 'Fechamento do Pedro')
|
||||
sign_in motorista
|
||||
|
||||
get motorista_totais_path(periodo)
|
||||
get motorista_dashboard_path(periodo)
|
||||
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(response.body).to include('Fechamento Junho')
|
||||
expect(response.body).to include('R$ 120,00')
|
||||
expect(response.body).not_to include('Fechamento do Pedro')
|
||||
end
|
||||
|
||||
@@ -83,7 +95,7 @@ RSpec.describe 'Totais por motorista', type: :request do
|
||||
|
||||
it 'não é acessível por quem não é motorista' do
|
||||
sign_in create(:gerente)
|
||||
get motorista_totais_path
|
||||
get motorista_totais_pdf_path(periodo)
|
||||
expect(response).to redirect_to(dashboard_path)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user