forked from piccolo-orm/piccolo
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_sql_values.py
More file actions
64 lines (52 loc) · 1.59 KB
/
test_sql_values.py
File metadata and controls
64 lines (52 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from enum import Enum
from unittest import TestCase
from piccolo.columns.column_types import JSON, JSONB, Integer, Varchar
from piccolo.table import Table
from piccolo.utils.sql_values import convert_to_sql_value
class TestConvertToSQLValue(TestCase):
def test_convert_json(self):
"""
Make sure Python objects are serialised correctly to JSON strings.
"""
self.assertEqual(
convert_to_sql_value(value={"a": 123}, column=JSON()).replace(
" ", ""
),
'{"a":123}',
)
self.assertEqual(
convert_to_sql_value(value={"a": 123}, column=JSONB()).replace(
" ", ""
),
'{"a":123}',
)
def test_convert_table_instance(self):
"""
Make sure Table instances are converted to integers.
"""
class MyTable(Table):
pass
instance = MyTable(id=1)
self.assertEqual(
convert_to_sql_value(
value=instance, column=MyTable._meta.primary_key
),
1,
)
def test_convert_enum(self):
"""
Make sure Enum instances are converted to their values.
"""
class Colour(Enum):
red = "red"
self.assertEqual(
convert_to_sql_value(value=Colour.red, column=Varchar()), "red"
)
def test_other(self):
"""
Make sure simple Python values are returned correctly.
"""
self.assertEqual(
convert_to_sql_value(value=1, column=Integer()),
1,
)