feat: seletor de linhas por pagina e paginacao numerada na listagem de clientes

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Gustavo
2026-08-20 09:01:12 -03:00
co-authored by Claude Sonnet 5
parent 5a3c4ac092
commit 9ce6bcdcad
3 changed files with 77 additions and 16 deletions
+32 -4
View File
@@ -186,10 +186,38 @@ def test_listar_clientes_pagina_com_controles_de_paginacao(monkeypatch):
resposta = client.get("/clientes?pagina=2&por_pagina=100")
assert resposta.status_code == 200
assert "Página 2 de 3" in resposta.text
assert "250 clientes" in resposta.text
assert "Anterior" in resposta.text
assert "Próxima" in resposta.text
assert "Exibindo 101 a 200 de 250 clientes" in resposta.text
assert "pagina=1&ordenar_por=razao&direcao=asc&por_pagina=100" in resposta.text
assert "pagina=3&ordenar_por=razao&direcao=asc&por_pagina=100" in resposta.text
def test_listar_clientes_footer_com_selecao_de_por_pagina(monkeypatch):
monkeypatch.setattr(
router_clientes.db_clientes,
"listar_clientes",
lambda busca=None, limite=100, offset=0, ordenar_por="razao", direcao="asc": [
{"ID": i, "CODIGO": f"{i:06d}", "RAZAO": f"Cliente {i}", "FANTASIA": f"C{i}", "CNPJ": "1"}
for i in range(1, 16)
],
)
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None, ordenar_por="razao": 98)
resposta = client.get("/clientes?pagina=1")
assert resposta.status_code == 200
assert 'value="15" selected' in resposta.text
assert "Exibindo 1 a 15 de 98 clientes" in resposta.text
# 98 / 15 = 7 paginas -> <=7, sem reticencias, todas visiveis
assert "pagina=7&ordenar_por=razao&direcao=asc&por_pagina=15" in resposta.text
def test_listar_clientes_paginacao_com_reticencias_quando_muitas_paginas(monkeypatch):
monkeypatch.setattr(router_clientes.db_clientes, "listar_clientes", lambda **kwargs: [])
monkeypatch.setattr(router_clientes.db_clientes, "contar_clientes", lambda busca=None, ordenar_por="razao": 500)
# 500 / 5 = 100 paginas, pedindo a pagina 10 (no meio) -> tem reticencias
resposta = client.get("/clientes?pagina=10&por_pagina=5")
assert resposta.status_code == 200
assert "&hellip;" in resposta.text
def test_listar_clientes_ordenar_por_invalido_cai_no_padrao(monkeypatch):