fix: busca de clientes restrita ao campo escolhido em ordenar_por
Antes, digitar qualquer coisa na busca comparava com CODIGO, CNPJ, RAZAO e FANTASIA ao mesmo tempo (OR), entao escolher 'Ordenar por: Codigo' e buscar '242' trazia tambem clientes cujo CNPJ ou Razao continham '242' em outro lugar. Agora a busca usa so a coluna selecionada no dropdown (mesma whitelist ja usada pra ordenacao). listar_clientes()/contar_clientes() e o template ganharam o ajuste; o dropdown mudou de rotulo pra 'Buscar/ordenar por' pra deixar claro que controla os dois. 93/93 testes passando.
This commit is contained in:
@@ -87,8 +87,15 @@ def test_excluir_cliente_sem_dependencias(cliente_id):
|
||||
assert db_clientes.obter_cliente(cliente_id) is None
|
||||
|
||||
|
||||
def test_listar_clientes_ordena_por_codigo(cliente_id):
|
||||
def test_listar_clientes_busca_e_restrita_a_coluna_escolhida(cliente_id):
|
||||
# ordenar_por="codigo" restringe a busca à coluna CODIGO — o termo
|
||||
# "TESTE PAINEL RAZAO" existe em RAZAO/FANTASIA, mas não deve aparecer
|
||||
# aqui porque a busca não olha para essas colunas quando é "codigo".
|
||||
resultado = db_clientes.listar_clientes(busca="TESTE PAINEL RAZAO", ordenar_por="codigo")
|
||||
assert len(resultado) == 0
|
||||
|
||||
# Buscando pelo próprio código, com ordenar_por="codigo", encontra.
|
||||
resultado = db_clientes.listar_clientes(busca="999901", ordenar_por="codigo")
|
||||
assert resultado[0]["CODIGO"] == "999901"
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ def test_raiz_redireciona_para_clientes_com_login(monkeypatch):
|
||||
from app.routers import clientes as router_clientes
|
||||
|
||||
monkeypatch.setattr(router_clientes.db_clientes, "listar_clientes", lambda busca=None, limite=100, offset=0: [])
|
||||
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None: 0)
|
||||
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None, ordenar_por="razao": 0)
|
||||
resposta = client.get("/", headers=_AUTH_HEADERS, follow_redirects=False)
|
||||
assert resposta.status_code == 307
|
||||
assert resposta.headers["location"] == "/clientes"
|
||||
|
||||
@@ -61,7 +61,7 @@ def test_listar_clientes(monkeypatch):
|
||||
{"ID": 1, "CODIGO": "000001", "RAZAO": "Cliente Um", "FANTASIA": "Um", "CNPJ": "11222333000181"}
|
||||
],
|
||||
)
|
||||
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None: 1)
|
||||
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None, ordenar_por="razao": 1)
|
||||
resposta = client.get("/clientes")
|
||||
assert resposta.status_code == 200
|
||||
assert "Cliente Um" in resposta.text
|
||||
@@ -76,7 +76,7 @@ def test_listar_clientes_pagina_com_controles_de_paginacao(monkeypatch):
|
||||
for i in range(1, 6)
|
||||
],
|
||||
)
|
||||
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None: 250)
|
||||
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None, ordenar_por="razao": 250)
|
||||
|
||||
resposta = client.get("/clientes?pagina=2")
|
||||
assert resposta.status_code == 200
|
||||
@@ -94,7 +94,7 @@ def test_listar_clientes_ordenar_por_invalido_cai_no_padrao(monkeypatch):
|
||||
return []
|
||||
|
||||
monkeypatch.setattr(router_clientes.db_clientes, "listar_clientes", _listar_clientes)
|
||||
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None: 0)
|
||||
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None, ordenar_por="razao": 0)
|
||||
|
||||
client.get("/clientes?ordenar_por=coisa_invalida_qualquer")
|
||||
assert capturado["ordenar_por"] == "razao"
|
||||
|
||||
Reference in New Issue
Block a user