2024-10-29 09:58:22 +01:00
|
|
|
import json
|
|
|
|
|
2023-10-16 13:27:59 +02:00
|
|
|
import pytest
|
|
|
|
|
2024-10-29 09:58:22 +01:00
|
|
|
from lnbits.db import (
|
|
|
|
dict_to_model,
|
2023-10-16 13:27:59 +02:00
|
|
|
insert_query,
|
2024-10-29 09:58:22 +01:00
|
|
|
model_to_dict,
|
2023-10-16 13:27:59 +02:00
|
|
|
update_query,
|
|
|
|
)
|
2024-10-29 09:58:22 +01:00
|
|
|
from tests.helpers import DbTestModel, DbTestModel2, DbTestModel3
|
2023-10-16 13:27:59 +02:00
|
|
|
|
2024-10-29 09:58:22 +01:00
|
|
|
test_data = DbTestModel3(
|
|
|
|
id=1,
|
|
|
|
user="userid",
|
|
|
|
child=DbTestModel2(
|
|
|
|
id=2,
|
|
|
|
label="test",
|
|
|
|
description="mydesc",
|
|
|
|
child=DbTestModel(id=3, name="myname", value="myvalue"),
|
2024-11-01 10:12:18 +01:00
|
|
|
child_list=[DbTestModel(id=6, name="myname", value="myvalue")],
|
2024-10-29 09:58:22 +01:00
|
|
|
),
|
2024-11-01 10:12:18 +01:00
|
|
|
children=[DbTestModel(id=4, name="myname", value="myvalue")],
|
|
|
|
children_ids=[4, 1, 3],
|
2024-10-29 09:58:22 +01:00
|
|
|
active=True,
|
|
|
|
)
|
2023-10-16 13:27:59 +02:00
|
|
|
|
|
|
|
|
2024-12-11 10:39:28 +01:00
|
|
|
@pytest.mark.anyio
|
2023-10-16 13:27:59 +02:00
|
|
|
async def test_helpers_insert_query():
|
2024-10-29 09:58:22 +01:00
|
|
|
q = insert_query("test_helpers_query", test_data)
|
|
|
|
assert q == (
|
2024-11-01 10:12:18 +01:00
|
|
|
"INSERT INTO test_helpers_query "
|
|
|
|
"""("id", "user", "child", "active", "children", "children_ids") """
|
|
|
|
"VALUES (:id, :user, :child, :active, :children, :children_ids)"
|
2024-09-24 10:56:03 +02:00
|
|
|
)
|
2023-10-16 13:27:59 +02:00
|
|
|
|
|
|
|
|
2024-12-11 10:39:28 +01:00
|
|
|
@pytest.mark.anyio
|
2023-10-16 13:27:59 +02:00
|
|
|
async def test_helpers_update_query():
|
2024-10-29 09:58:22 +01:00
|
|
|
q = update_query("test_helpers_query", test_data)
|
|
|
|
assert q == (
|
|
|
|
"""UPDATE test_helpers_query SET "id" = :id, "user" = """
|
2024-11-01 10:12:18 +01:00
|
|
|
""":user, "child" = :child, "active" = :active, "children" = """
|
|
|
|
""":children, "children_ids" = :children_ids WHERE id = :id"""
|
2024-09-24 10:56:03 +02:00
|
|
|
)
|
2024-10-29 09:58:22 +01:00
|
|
|
|
|
|
|
|
|
|
|
child_json = json.dumps(
|
|
|
|
{
|
|
|
|
"id": 2,
|
|
|
|
"label": "test",
|
|
|
|
"description": "mydesc",
|
|
|
|
"child": {"id": 3, "name": "myname", "value": "myvalue"},
|
2024-11-01 10:12:18 +01:00
|
|
|
"child_list": [{"id": 6, "name": "myname", "value": "myvalue"}],
|
2024-10-29 09:58:22 +01:00
|
|
|
}
|
|
|
|
)
|
2024-11-01 10:12:18 +01:00
|
|
|
test_dict = {
|
|
|
|
"id": 1,
|
|
|
|
"user": "userid",
|
|
|
|
"child": child_json,
|
|
|
|
"active": True,
|
|
|
|
"children": '[{"id": 4, "name": "myname", "value": "myvalue"}]',
|
|
|
|
"children_ids": "[4, 1, 3]",
|
|
|
|
}
|
2024-10-29 09:58:22 +01:00
|
|
|
|
|
|
|
|
2024-12-11 10:39:28 +01:00
|
|
|
@pytest.mark.anyio
|
2024-10-29 09:58:22 +01:00
|
|
|
async def test_helpers_model_to_dict():
|
|
|
|
d = model_to_dict(test_data)
|
|
|
|
assert d.get("id") == test_data.id
|
|
|
|
assert d.get("active") == test_data.active
|
|
|
|
assert d.get("child") == child_json
|
|
|
|
assert d.get("user") == test_data.user
|
|
|
|
assert d == test_dict
|
|
|
|
|
|
|
|
|
2024-12-11 10:39:28 +01:00
|
|
|
@pytest.mark.anyio
|
2024-10-29 09:58:22 +01:00
|
|
|
async def test_helpers_dict_to_model():
|
|
|
|
m = dict_to_model(test_dict, DbTestModel3)
|
|
|
|
assert m == test_data
|
|
|
|
assert type(m) is DbTestModel3
|
|
|
|
assert m.active is True
|
|
|
|
assert type(m.child) is DbTestModel2
|
|
|
|
assert type(m.child.child) is DbTestModel
|