Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions tests/unit/test_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from unittest.mock import MagicMock

import pytest
from fastapi import Response

from app.db.connector import DB # ajusta el import a tu ruta real

Expand Down Expand Up @@ -82,3 +83,53 @@ def test_create_table_and_store_chat(tmp_path):
)
# Commit y cierre
fake_pool.putconn.assert_called_with(conn)


def test_change_votes_success_up():
db = DB()
resp = db.change_votes(
chat_id="11111111-1111-1111-1111-111111111111",
up=True,
down=False,
equal=False,
user_id=uuid.UUID(int=0),
comment="Comentario",
)

# 1) Verifica la respuesta
assert isinstance(resp, Response)
assert resp.status_code == 204

# 2) Inspecciona los calls al cursor
fake_conn = db.pool.getconn()
fake_cursor = fake_conn.cursor_obj # MagicMock

# Debió llamarse execute al menos una vez
calls = fake_cursor.execute.call_args_list
assert calls, "No se llamó a cursor.execute()"

# Parámetros esperados
expected_params = (
1,
"Comentario",
"11111111-1111-1111-1111-111111111111",
str(uuid.UUID(int=0)),
)

# Busca alguna llamada cuyo SQL contenga "UPDATE chats"
# y cuyos params coincidan
found = False
for call in calls:
sql_arg = call.args[0].strip()
params_arg = call.args[1]
if "UPDATE chats" in sql_arg and params_arg == expected_params:
found = True
break

assert found, (
"No se encontró un call a execute() con UPDATE chats y "
f"params={expected_params}. Calls realizados: {calls}"
)

# 3) Verifica que devolvió la conexión al pool
assert db.pool.putconn.called, "No se llamó a pool.putconn()"