diff --git a/app/templates/cliente_detalhe.html b/app/templates/cliente_detalhe.html index 057bbfb..f9dc7e7 100644 --- a/app/templates/cliente_detalhe.html +++ b/app/templates/cliente_detalhe.html @@ -18,6 +18,18 @@ {{ ct.NOME }}{{ ct.TELEFONE }}{{ ct.EMAIL or "" }} +
+ Editar +
+ + + + + + + +
+
diff --git a/tests/test_router_clientes.py b/tests/test_router_clientes.py index d5907ef..f74768a 100644 --- a/tests/test_router_clientes.py +++ b/tests/test_router_clientes.py @@ -29,6 +29,26 @@ def test_listar_clientes(monkeypatch): assert "Cliente Um" in resposta.text +def test_detalhe_cliente_mostra_formulario_de_edicao_de_contato(monkeypatch): + monkeypatch.setattr( + router_clientes.db_clientes, + "obter_cliente", + lambda cid: {"ID": cid, "CODIGO": "000001", "RAZAO": "Cliente Um", "FANTASIA": "Um", "CNPJ": "11222333000181"}, + ) + monkeypatch.setattr( + router_clientes.db_contatos, + "listar_contatos_por_cliente", + lambda cid: [{"ID": 7, "NOME": "Fulano", "TELEFONE": "75999090001", "EMAIL": None}], + ) + monkeypatch.setattr(router_clientes.db_chaves, "status_chaves", lambda codigo: None) + + resposta = client.get("/clientes/1") + assert resposta.status_code == 200 + assert '/clientes/1/contatos/7/editar' in resposta.text + assert 'value="Fulano"' in resposta.text + assert 'value="75999090001"' in resposta.text + + def test_criar_cliente_codigo_duplicado_exige_confirmacao(monkeypatch): monkeypatch.setattr(router_clientes.db_clientes, "codigo_em_uso", lambda codigo, ignorar_id=None: True) criado = {} diff --git a/tests/test_router_contatos.py b/tests/test_router_contatos.py index af3e724..f36901a 100644 --- a/tests/test_router_contatos.py +++ b/tests/test_router_contatos.py @@ -39,6 +39,39 @@ def test_adicionar_contato_duplicado_avisa(monkeypatch): assert "já está cadastrado" in resposta.text +def test_editar_contato_com_sucesso(monkeypatch): + monkeypatch.setattr(router_contatos.db_contatos, "contato_duplicado", lambda cid, tel, ignorar_id=None: False) + chamadas = {} + monkeypatch.setattr( + router_contatos.db_contatos, + "atualizar_contato", + lambda contato_id, cid, nome, tel, email=None: chamadas.setdefault( + "dados", (contato_id, cid, nome, tel, email) + ), + ) + + resposta = client.post( + "/clientes/1/contatos/5/editar", + data={"nome": "Fulano Editado", "telefone": "(75) 99909-0002", "email": "fulano@example.com"}, + ) + assert resposta.status_code == 303 + assert chamadas["dados"] == (5, 1, "Fulano Editado", "75999090002", "fulano@example.com") + + +def test_editar_contato_duplicado_avisa(monkeypatch): + monkeypatch.setattr(router_contatos.db_contatos, "contato_duplicado", lambda cid, tel, ignorar_id=None: True) + monkeypatch.setattr(router_clientes.db_clientes, "obter_cliente", lambda cid: {"ID": cid, "CODIGO": "000001", "RAZAO": "Cliente", "FANTASIA": "Cliente"}) + monkeypatch.setattr(router_clientes.db_contatos, "listar_contatos_por_cliente", lambda cid: []) + monkeypatch.setattr(router_clientes.db_chaves, "status_chaves", lambda codigo: None) + + resposta = client.post( + "/clientes/1/contatos/5/editar", + data={"nome": "Fulano", "telefone": "75999090001"}, + follow_redirects=True, + ) + assert "já está cadastrado" in resposta.text + + def test_excluir_contato(monkeypatch): monkeypatch.setattr(router_contatos.db_clientes, "obter_cliente", lambda cid: {"ID": cid, "CODIGO": "000001"}) chamadas = {}