forked from julien-duponchelle/python-mysql-replication
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtest_data_objects.py
86 lines (71 loc) · 2.94 KB
/
test_data_objects.py
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import sys
if sys.version_info < (2, 7):
import unittest2 as unittest
else:
import unittest
from pymysqlreplication.column import Column
from pymysqlreplication.table import Table
from pymysqlreplication.event import GtidEvent
from pymysqlreplication.tests import base
from typing import List
__all__ = ["TestDataObjects"]
class TestDataObjects(base.PyMySQLReplicationTestCase):
def ignoredEvents(self) -> List[GtidEvent]:
return [GtidEvent]
def test_column_is_primary(self):
col = Column(1,
{"COLUMN_NAME": "test",
"COLLATION_NAME": "utf8_general_ci",
"CHARACTER_SET_NAME": "UTF8",
"CHARACTER_OCTET_LENGTH": None,
"DATA_TYPE": "tinyint",
"COLUMN_COMMENT": "",
"COLUMN_TYPE": "tinyint(2)",
"COLUMN_KEY": "PRI"},
None)
self.assertEqual(True, col.is_primary)
def test_column_not_primary(self):
col = Column(1,
{"COLUMN_NAME": "test",
"COLLATION_NAME": "utf8_general_ci",
"CHARACTER_SET_NAME": "UTF8",
"CHARACTER_OCTET_LENGTH": None,
"DATA_TYPE": "tinyint",
"COLUMN_COMMENT": "",
"COLUMN_TYPE": "tinyint(2)",
"COLUMN_KEY": ""},
None)
self.assertEqual(False, col.is_primary)
def test_column_serializable(self):
col = Column(1,
{"COLUMN_NAME": "test",
"COLLATION_NAME": "utf8_general_ci",
"CHARACTER_SET_NAME": "UTF8",
"CHARACTER_OCTET_LENGTH": None,
"DATA_TYPE": "tinyint",
"COLUMN_COMMENT": "",
"COLUMN_TYPE": "tinyint(2)",
"COLUMN_KEY": "PRI"},
None)
serialized = col.serializable_data()
self.assertIn("type", serialized)
self.assertIn("name", serialized)
self.assertIn("collation_name", serialized)
self.assertIn("character_set_name", serialized)
self.assertIn("comment", serialized)
self.assertIn("unsigned", serialized)
self.assertIn("zerofill", serialized)
self.assertIn("type_is_bool", serialized)
self.assertIn("is_primary", serialized)
self.assertEqual(col, Column(**serialized))
def test_table(self):
tbl = Table(1, "test_schema", "test_table", [], [])
serialized = tbl.serializable_data()
self.assertIn("table_id", serialized)
self.assertIn("schema", serialized)
self.assertIn("table", serialized)
self.assertIn("columns", serialized)
self.assertIn("column_schemas", serialized)
self.assertEqual(tbl, Table(**serialized))
if __name__ == "__main__":
unittest.main()