Coverage for databases/tests/types/raw_queries/test_decimal.py: 100%
25 statements
« prev ^ index » next coverage.py v7.2.7, created at 2024-04-28 15:17 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2024-04-28 15:17 +0000
1from decimal import Decimal
3import pytest
4from pydantic import BaseModel
6from prisma import Prisma
7from prisma.models import Types
9from ...._types import DatabaseMapping, SupportedDatabase
10from ...._compat import LiteralString
13class Queries(BaseModel):
14 select: LiteralString
17_mysql_queries = Queries(
18 select='SELECT * FROM Types WHERE decimal_ = ?',
19)
21_postgresql_queries = Queries(
22 select='SELECT * FROM "Types" WHERE decimal_ = $1::numeric',
23)
25RAW_QUERIES: DatabaseMapping[Queries] = {
26 'mysql': _mysql_queries,
27 'mariadb': _mysql_queries,
28 'sqlite': Queries(
29 select='SELECT * FROM Types WHERE decimal_ = ?',
30 ),
31 'postgresql': _postgresql_queries,
32 'cockroachdb': _postgresql_queries,
33}
36@pytest.mark.asyncio
37async def test_query_first(
38 client: Prisma,
39 database: SupportedDatabase,
40) -> None:
41 """Standard usage of decimal_ in raw SELECT queries"""
42 queries = RAW_QUERIES[database]
44 record = await client.types.create({'decimal_': Decimal(1)})
46 found = await client.query_first(queries.select, Decimal(1))
47 assert found['id'] == record.id
48 assert found['decimal_'] == 1
50 record2 = await client.types.create({'decimal_': Decimal('1.24343336464224')})
52 found = await client.query_first(queries.select, Decimal('1.24343336464224'))
53 assert found['id'] == record2.id
54 assert found['decimal_'] == 1.24343336464224
56 model = await client.query_first(queries.select, Decimal('1.24343336464224'), model=Types)
57 assert model is not None
58 assert model.id == record2.id
59 assert model.decimal_ == Decimal('1.24343336464224')