Coverage for tests/test_mariadb_query_compilation.py: 100%
28 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-07 21:13 +0300
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-07 21:13 +0300
1"""MariaDB query compilation seam tests."""
3from __future__ import annotations
5from snektest import assert_eq, test
7import snekql.mariadb.query as mariadb_query
8from snekql import MISSING, Pending, insert, mariadb, select, update
9from snekql.mariadb.query import compile_mariadb_select_sql, compile_mariadb_write_sql
12@test(mark="fast")
13def mariadb_query_compiler_uses_dialect_without_sqlite_translation() -> None:
14 """MariaDB SQL compilation is direct, not translated from SQLite SQL."""
16 assert_eq(hasattr(mariadb_query, "_translate_sqlite_sql"), False)
17 assert_eq(hasattr(mariadb_query, "compile_select_sql"), False)
18 assert_eq(hasattr(mariadb_query, "compile_write_sql"), False)
21@test(mark="fast")
22def mariadb_query_compilation_renders_backend_sql_and_codecs_directly() -> None:
23 """MariaDB compilation owns quotes, placeholders, and value codecs."""
25 class User[S = Pending](mariadb.Model[S, "User[object]"]):
26 """MariaDB model used by direct dialect-compilation checks."""
28 __tablename__ = "select"
29 id: User.GenCol[int] = mariadb.Integer(
30 primary_key=True,
31 auto_increment=True,
32 default=MISSING,
33 )
34 enabled: User.Col[bool] = mariadb.Boolean(nullable=False)
35 status: User.Col[str] = mariadb.Text(nullable=False)
36 where: User.Col[str] = mariadb.Text(nullable=False)
38 select_sql, select_params = compile_mariadb_select_sql(
39 select(User.where)
40 .where(User.enabled.eq(True), User.status.in_("active", "paused"))
41 .order_by(User.where.desc())
42 .limit(2)
43 .offset(1),
44 )
45 update_sql, update_params = compile_mariadb_write_sql(
46 update(User).set(User.enabled.to(False)).where(User.where.ne("old")),
47 )
48 insert_sql, insert_params = compile_mariadb_write_sql(
49 insert(User(enabled=True, status="active", where="new")),
50 )
52 expected_select_sql = "".join(
53 (
54 "SELECT `where` FROM `select` WHERE (`enabled` = %s) ",
55 "AND (`status` IN (%s, %s)) ORDER BY `where` DESC LIMIT %s OFFSET %s",
56 )
57 )
58 assert_eq(select_sql, expected_select_sql)
59 assert_eq(select_params, (1, "active", "paused", 2, 1))
60 assert_eq(update_sql, "UPDATE `select` SET `enabled` = %s WHERE (`where` != %s)")
61 assert_eq(update_params, (0, "old"))
62 assert_eq(
63 insert_sql,
64 "INSERT INTO `select` (`enabled`, `status`, `where`) VALUES (%s, %s, %s)",
65 )
66 assert_eq(insert_params, (1, "active", "new"))