forked from piccolo-orm/piccolo
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_bytea.py
More file actions
62 lines (45 loc) · 1.54 KB
/
test_bytea.py
File metadata and controls
62 lines (45 loc) · 1.54 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
from unittest import TestCase
from piccolo.table import Table
from piccolo.columns.column_types import Bytea
class MyTable(Table):
token = Bytea()
class MyTableDefault(Table):
"""
Test the different default types.
"""
token = Bytea()
token_bytes = Bytea(default=b"my-token")
token_bytearray = Bytea(default=bytearray(b"my-token"))
token_none = Bytea(default=None, null=True)
class TestBytea(TestCase):
def setUp(self):
MyTable.create_table().run_sync()
def tearDown(self):
MyTable.alter().drop_table().run_sync()
def test_bytea(self):
"""
Test storing a valid bytes value.
"""
row = MyTable(token=b"my-token")
row.save().run_sync()
self.assertEqual(row.token, b"my-token")
self.assertEqual(
MyTable.select(MyTable.token).first().run_sync(),
{"token": b"my-token"},
)
class TestByteaDefault(TestCase):
def setUp(self):
MyTableDefault.create_table().run_sync()
def tearDown(self):
MyTableDefault.alter().drop_table().run_sync()
def test_json_default(self):
row = MyTableDefault()
row.save().run_sync()
self.assertEqual(row.token, b"")
self.assertEqual(row.token_bytes, b"my-token")
self.assertEqual(row.token_bytearray, b"my-token")
self.assertEqual(row.token_none, None)
def test_invalid_default(self):
with self.assertRaises(ValueError):
for value in ("a", 1, ("x", "y", "z")):
Bytea(default=value)