|
@@ -56,7 +56,6 @@ class DataSourceTestCase(TestCase):
|
56
|
56
|
DataSource(conn_args = conn_args)
|
57
|
57
|
mock_db.assert_called_once_with(pymysql, **conn_args)
|
58
|
58
|
|
59
|
|
- @unittest.skip("Broken because of multivalue fields")
|
60
|
59
|
def test_insert_leobject(self):
|
61
|
60
|
""" Test the insert method on LeObjects """
|
62
|
61
|
from dyncode import Article, Personne, Rubrique
|
|
@@ -82,11 +81,16 @@ class DataSourceTestCase(TestCase):
|
82
|
81
|
|
83
|
82
|
sql_query = 'SELECT wow FROM splendid_table'
|
84
|
83
|
|
85
|
|
- class_table_datas = { fname: random.randint(42,1337) for fname in letype.fieldlist(complete = False) }
|
86
|
|
- for fname in class_table_datas:
|
|
84
|
+ class_table_datas = {
|
|
85
|
+ fname: random.randint(42,1337)
|
|
86
|
+ for fname in letype.fieldlist(complete = False)
|
|
87
|
+ if not isinstance(letype.fieldtypes()[fname], MultiValueFieldType)
|
|
88
|
+ }
|
|
89
|
+ i18n = dict()
|
|
90
|
+ for fname in letype.fieldlist():
|
87
|
91
|
if isinstance(letype.fieldtypes()[fname], MultiValueFieldType):
|
88
|
|
- class_table_datas[fname] = {'fre': 'bonjour', 'eng': 'hello'}
|
89
|
|
- #class_table_datas = { 'title': 'foo', 'number': 42 }
|
|
92
|
+ i18n[fname] = {'fre': 'bonjour', 'eng': 'hello'}
|
|
93
|
+ class_table_datas[fname] = i18n[fname]
|
90
|
94
|
object_table_datas = { 'string': random.randint(-42,42) }
|
91
|
95
|
|
92
|
96
|
# build the insert datas argument
|
|
@@ -103,6 +107,8 @@ class DataSourceTestCase(TestCase):
|
103
|
107
|
object_table_datas['type_id'] = letype._type_id
|
104
|
108
|
# construct expected datas used in class table insert
|
105
|
109
|
class_table_datas['lodel_id'] = lodel_id
|
|
110
|
+ for fname in i18n:
|
|
111
|
+ del(class_table_datas[fname])
|
106
|
112
|
|
107
|
113
|
expected_calls = [
|
108
|
114
|
# insert in object table call
|
|
@@ -116,7 +122,29 @@ class DataSourceTestCase(TestCase):
|
116
|
122
|
class_table_datas
|
117
|
123
|
),
|
118
|
124
|
]
|
119
|
|
-
|
|
125
|
+ i18n_calls = dict()
|
|
126
|
+ for fname, fval in i18n.items():
|
|
127
|
+ keyname = letype.fieldtypes()[fname].keyname
|
|
128
|
+ if not keyname in i18n_calls:
|
|
129
|
+ i18n_calls[keyname] = dict()
|
|
130
|
+ for lang, val in fval.items():
|
|
131
|
+ if not lang in i18n_calls[keyname]:
|
|
132
|
+ i18n_calls[keyname][lang] = dict()
|
|
133
|
+ i18n_calls[keyname][lang][fname] = val
|
|
134
|
+ real_i18n_calls = []
|
|
135
|
+ for keyname, kval in i18n_calls.items():
|
|
136
|
+ table_name = db_utils.multivalue_table_name(
|
|
137
|
+ db_utils.object_table_name(letype._leclass.__name__),
|
|
138
|
+ keyname
|
|
139
|
+ )
|
|
140
|
+ for lang, value in kval.items():
|
|
141
|
+ value[keyname] = lang
|
|
142
|
+ value[letype.uidname()] = lodel_id
|
|
143
|
+ expected_calls.append(call(
|
|
144
|
+ table_name,
|
|
145
|
+ value
|
|
146
|
+ )
|
|
147
|
+ )
|
120
|
148
|
expected_utils_query_calls = [
|
121
|
149
|
call(datasource.connection, sql_query),
|
122
|
150
|
call(datasource.connection, sql_query),
|