Files
MeshChatX/tests/backend/test_message_dao_extended.py
T

70 lines
2.1 KiB
Python

# SPDX-License-Identifier: 0BSD
import json
from unittest.mock import MagicMock
import pytest
from meshchatx.src.backend.database.messages import MessageDAO
@pytest.fixture
def mock_provider():
return MagicMock()
@pytest.fixture
def message_dao(mock_provider):
return MessageDAO(mock_provider)
def test_upsert_lxmf_message(message_dao, mock_provider):
data = {"hash": "hash1", "content": "hello", "fields": {"key": "val"}}
message_dao.upsert_lxmf_message(data)
args, _ = mock_provider.execute.call_args
query, params = args
assert "INSERT INTO lxmf_messages" in query
assert "hash1" in params
assert "hello" in params
assert json.dumps({"key": "val"}) in params
def test_get_lxmf_message_by_hash(message_dao, mock_provider):
message_dao.get_lxmf_message_by_hash("hash1")
mock_provider.fetchone.assert_called_with(
"SELECT * FROM lxmf_messages WHERE hash = ?",
("hash1",),
)
def test_delete_lxmf_messages_by_hashes(message_dao, mock_provider):
message_dao.delete_lxmf_messages_by_hashes(["h1", "h2"])
args, _ = mock_provider.execute.call_args
assert "DELETE FROM lxmf_messages WHERE hash IN (?, ?)" in args[0]
assert args[1] == ("h1", "h2")
def test_delete_all_lxmf_messages(message_dao, mock_provider):
message_dao.delete_all_lxmf_messages()
assert mock_provider.execute.call_count == 2
def test_get_conversation_messages(message_dao, mock_provider):
message_dao.get_conversation_messages("peer1", limit=10, offset=5)
mock_provider.fetchall.assert_called_with(
"SELECT * FROM lxmf_messages WHERE peer_hash = ? ORDER BY timestamp DESC LIMIT ? OFFSET ?",
("peer1", 10, 5),
)
def test_set_lxmf_message_path_at_send_if_unset(message_dao, mock_provider):
message_dao.set_lxmf_message_path_at_send_if_unset("deadbeef", 2, "UDP Interface")
args, _ = mock_provider.execute.call_args
query, params = args
assert "path_hops_at_send" in query
assert "path_hops_at_send IS NULL" in query
assert params[0] == 2
assert params[1] == "UDP Interface"
assert params[3] == "deadbeef"