teste #5
BIN
Imagens para implantação /Imagem colada (11).png
Normal file
BIN
Imagens para implantação /Imagem colada (11).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 74 KiB |
@@ -37,17 +37,28 @@ class Operacao
|
|||||||
nomes_validos.include?(nome.to_s)
|
nomes_validos.include?(nome.to_s)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Rótulo amigável: tira o prefixo e formata.
|
# Rótulo amigável: tira o prefixo e formata em CAIXA ALTA (para não parecer o
|
||||||
|
# nome cru da tabela do banco).
|
||||||
def label(tabela)
|
def label(tabela)
|
||||||
tabela.to_s.delete_prefix(PREFIXO).tr('_', ' ').strip.titleize
|
tabela.to_s.delete_prefix(PREFIXO).tr('_', ' ').strip.upcase
|
||||||
end
|
end
|
||||||
|
|
||||||
# Abreviações de mês usadas nos nomes das tabelas (gade_entregas_emad_fev_2026).
|
# Meses usados nos nomes das tabelas (gade_entregas_emad_fev_2026). Aceita a
|
||||||
|
# abreviação (fev) E o nome por extenso (fevereiro) — o cliente usa os dois
|
||||||
|
# (ex.: "..._ubs_norte_maio_2026"), então ambos precisam cair no mês certo.
|
||||||
MESES = {
|
MESES = {
|
||||||
'jan' => [1, 'Janeiro'], 'fev' => [2, 'Fevereiro'], 'mar' => [3, 'Março'],
|
'jan' => [1, 'Janeiro'], 'janeiro' => [1, 'Janeiro'],
|
||||||
'abr' => [4, 'Abril'], 'mai' => [5, 'Maio'], 'jun' => [6, 'Junho'],
|
'fev' => [2, 'Fevereiro'], 'fevereiro' => [2, 'Fevereiro'],
|
||||||
'jul' => [7, 'Julho'], 'ago' => [8, 'Agosto'], 'set' => [9, 'Setembro'],
|
'mar' => [3, 'Março'], 'marco' => [3, 'Março'], 'março' => [3, 'Março'],
|
||||||
'out' => [10, 'Outubro'], 'nov' => [11, 'Novembro'], 'dez' => [12, 'Dezembro']
|
'abr' => [4, 'Abril'], 'abril' => [4, 'Abril'],
|
||||||
|
'mai' => [5, 'Maio'], 'maio' => [5, 'Maio'],
|
||||||
|
'jun' => [6, 'Junho'], 'junho' => [6, 'Junho'],
|
||||||
|
'jul' => [7, 'Julho'], 'julho' => [7, 'Julho'],
|
||||||
|
'ago' => [8, 'Agosto'], 'agosto' => [8, 'Agosto'],
|
||||||
|
'set' => [9, 'Setembro'], 'setembro' => [9, 'Setembro'],
|
||||||
|
'out' => [10, 'Outubro'], 'outubro' => [10, 'Outubro'],
|
||||||
|
'nov' => [11, 'Novembro'], 'novembro' => [11, 'Novembro'],
|
||||||
|
'dez' => [12, 'Dezembro'], 'dezembro' => [12, 'Dezembro']
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
# Agrupa as operações por mês/ano (extraído do nome da tabela), do mais recente
|
# Agrupa as operações por mês/ano (extraído do nome da tabela), do mais recente
|
||||||
@@ -99,7 +110,7 @@ class Operacao
|
|||||||
resto = (tokens[0...idx] + tokens[(ano ? idx + 2 : idx + 1)..]).join(' ').strip
|
resto = (tokens[0...idx] + tokens[(ano ? idx + 2 : idx + 1)..]).join(' ').strip
|
||||||
{
|
{
|
||||||
titulo: ano ? "#{nome} #{ano}" : nome,
|
titulo: ano ? "#{nome} #{ano}" : nome,
|
||||||
item: resto.presence&.titleize || nome,
|
item: (resto.presence || nome).to_s.upcase,
|
||||||
# mais recente primeiro; sem ano vai pro fim do bloco do mês
|
# mais recente primeiro; sem ano vai pro fim do bloco do mês
|
||||||
ordem: [-(ano || 0), -num]
|
ordem: [-(ano || 0), -num]
|
||||||
}
|
}
|
||||||
|
|||||||
31
spec/models/operacao_spec.rb
Normal file
31
spec/models/operacao_spec.rb
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
# label e grupo_de são só parsing do nome da tabela (sem tocar o banco).
|
||||||
|
RSpec.describe Operacao do
|
||||||
|
describe '.label (caixa alta, sem parecer o nome do banco)' do
|
||||||
|
it 'tira o prefixo e deixa em CAIXA ALTA' do
|
||||||
|
expect(Operacao.label('gade_entregas_ubs_norte_maio_2026')).to eq('UBS NORTE MAIO 2026')
|
||||||
|
expect(Operacao.label('gade_entregas_emad_fev_2026')).to eq('EMAD FEV 2026')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '.grupo_de (agrupamento por mês)' do
|
||||||
|
it 'reconhece o mês por EXTENSO (maio) e agrupa no mês certo, item em caixa alta' do
|
||||||
|
g = Operacao.send(:grupo_de, 'gade_entregas_ubs_norte_maio_2026')
|
||||||
|
expect(g[:titulo]).to eq('Maio 2026')
|
||||||
|
expect(g[:item]).to eq('UBS NORTE')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'continua reconhecendo a abreviação (fev)' do
|
||||||
|
g = Operacao.send(:grupo_de, 'gade_entregas_emad_fev_2026')
|
||||||
|
expect(g[:titulo]).to eq('Fevereiro 2026')
|
||||||
|
expect(g[:item]).to eq('EMAD')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'cai em "Outras" quando não há mês reconhecível' do
|
||||||
|
g = Operacao.send(:grupo_de, 'gade_entregas_oeste_centro_remanescentes')
|
||||||
|
expect(g[:titulo]).to eq('Outras')
|
||||||
|
expect(g[:item]).to eq('OESTE CENTRO REMANESCENTES')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user