Skip to content

Commit c6019bf

Browse files
fix tests due to wrong mock data
1 parent d791f85 commit c6019bf

File tree

1 file changed

+123
-95
lines changed

1 file changed

+123
-95
lines changed

test/test_modules/test_cli_clone.py

Lines changed: 123 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,15 @@ def test_list_metadata_rules(self, mock_metadata_rules):
6161
mock_metadata_rules.return_value = {
6262
'metadata_rules': [
6363
{
64-
'external_id': 'test_field',
65-
'type': 'string',
66-
'label': 'Test Field',
67-
'mandatory': False
64+
'external_id': 'test_rule',
65+
'condition': 'if',
66+
'metadata_field': {
67+
'external_id': 'test_field'
68+
},
69+
'results': [{
70+
'value': 'test_value',
71+
'apply_to': ['metadata_field_external_id']
72+
}]
6873
}
6974
]
7075
}
@@ -77,104 +82,122 @@ def test_list_metadata_rules(self, mock_metadata_rules):
7782
@patch('cloudinary.api.add_metadata_field')
7883
def test_create_metadata_item_field(self, mock_add_metadata_field):
7984
"""Test creating a single metadata field"""
80-
metadata_field = {
81-
'external_id': 'test_field',
82-
'type': 'string',
83-
'label': 'Test Field',
84-
'mandatory': False
85+
mock_metadata_fields = {
86+
'metadata_fields': [
87+
{
88+
'external_id': 'test_field',
89+
'type': 'string',
90+
'label': 'Test Field',
91+
'mandatory': False
92+
}
93+
]
8594
}
8695

87-
clone_module.create_metadata_item('add_metadata_field', metadata_field, self.mock_target_config)
96+
clone_module.create_metadata_item('add_metadata_field', mock_metadata_fields, self.mock_target_config)
8897

89-
mock_add_metadata_field.assert_called_once_with(metadata_field)
98+
mock_add_metadata_field.assert_called_once_with(mock_metadata_fields)
9099

91100
@patch('cloudinary.api.add_metadata_rule')
92101
def test_create_metadata_item_rule(self, mock_add_metadata_rule):
93102
"""Test creating a single metadata rule"""
94-
metadata_rule = {
95-
'external_id': 'test_rule',
96-
'condition': 'if',
97-
'metadata_field': {
98-
'external_id': 'test_field'
99-
},
100-
'results': [{
101-
'value': 'test_value',
102-
'apply_to': ['metadata_field_external_id']
103-
}]
103+
mock_metadata_rules = {
104+
'metadata_rules': [
105+
{
106+
'external_id': 'test_rule',
107+
'condition': 'if',
108+
'metadata_field': {
109+
'external_id': 'test_field'
110+
},
111+
'results': [{
112+
'value': 'test_value',
113+
'apply_to': ['metadata_field_external_id']
114+
}]
115+
}
116+
]
104117
}
105118

106-
clone_module.create_metadata_item('add_metadata_rule', metadata_rule, self.mock_target_config)
119+
clone_module.create_metadata_item('add_metadata_rule', mock_metadata_rules, self.mock_target_config)
107120

108-
mock_add_metadata_rule.assert_called_once_with(metadata_rule)
121+
mock_add_metadata_rule.assert_called_once_with(mock_metadata_rules)
109122

110123
@patch('cloudinary.api.add_metadata_field')
111124
def test_create_metadata_item_field_with_error(self, mock_add_metadata_field):
112125
"""Test creating metadata field with API error"""
113-
metadata_field = {
114-
'external_id': 'test_field',
115-
'type': 'string',
116-
'label': 'Test Field',
117-
'mandatory': False
126+
mock_metadata_fields = {
127+
'metadata_fields': [
128+
{
129+
'external_id': 'test_field',
130+
'type': 'string',
131+
'label': 'Test Field',
132+
'mandatory': False
133+
}
134+
]
118135
}
119136

120137
mock_add_metadata_field.side_effect = Exception("API Error")
121138

122139
with self.assertLogs(logger, level='ERROR') as log:
123-
clone_module.create_metadata_item('add_metadata_field', metadata_field, self.mock_target_config)
140+
clone_module.create_metadata_item('add_metadata_field', mock_metadata_fields, self.mock_target_config)
124141
self.assertIn('Error creating metadata field', log.output[0])
125142

126143
@patch('cloudinary.api.add_metadata_rule')
127144
def test_create_metadata_item_rule_with_error(self, mock_add_metadata_rule):
128145
"""Test creating metadata rule with API error"""
129-
metadata_rule = {
130-
'external_id': 'test_rule',
131-
'condition': 'if',
132-
'metadata_field': {
133-
'external_id': 'test_field'
134-
},
135-
'results': [{
136-
'value': 'test_value',
137-
'apply_to': ['metadata_field_external_id']
138-
}]
146+
mock_metadata_rules = {
147+
'metadata_rules': [
148+
{
149+
'external_id': 'test_rule',
150+
'condition': 'if',
151+
'metadata_field': {
152+
'external_id': 'test_field'
153+
},
154+
'results': [{
155+
'value': 'test_value',
156+
'apply_to': ['metadata_field_external_id']
157+
}]
158+
}
159+
]
139160
}
140161

141162
mock_add_metadata_rule.side_effect = Exception("API Error")
142163

143164
with self.assertLogs(logger, level='ERROR') as log:
144-
clone_module.create_metadata_item('add_metadata_rule', metadata_rule, self.mock_target_config)
165+
clone_module.create_metadata_item('add_metadata_rule', mock_metadata_rules, self.mock_target_config)
145166
self.assertIn('Error creating metadata field', log.output[0])
146167

147168
@patch.object(clone_module, 'create_metadata_item')
148169
@patch.object(clone_module, 'list_metadata_items')
149170
def test_compare_create_metadata_items_new_fields(self, mock_list, mock_create):
150171
"""Test comparing and creating new metadata fields"""
151-
source_fields = [
152-
{
153-
'external_id': 'field1',
154-
'type': 'string',
155-
'label': 'Field 1'
156-
},
157-
{
158-
'external_id': 'field2',
159-
'type': 'integer',
160-
'label': 'Field 2'
161-
}
162-
]
172+
mock_source_fields = {
173+
'metadata_fields': [
174+
{
175+
'external_id': 'field1',
176+
'type': 'string',
177+
'label': 'Field 1'
178+
},
179+
{
180+
'external_id': 'field2',
181+
'type': 'integer',
182+
'label': 'Field 2'
183+
}
184+
]
185+
}
163186

164-
destination_fields = []
187+
mock_destination_fields = []
165188

166-
clone_module.compare_create_metadata_items(source_fields, destination_fields, self.mock_target_config, key="metadata_fields")
189+
clone_module.compare_create_metadata_items(mock_source_fields, mock_destination_fields, self.mock_target_config, key="metadata_fields")
167190

168191
# Both fields should be created
169192
self.assertEqual(mock_create.call_count, 2)
170-
mock_create.assert_any_call(source_fields[0])
171-
mock_create.assert_any_call(source_fields[1])
193+
mock_create.assert_any_call(mock_source_fields[0])
194+
mock_create.assert_any_call(mock_source_fields[1])
172195

173196
@patch.object(clone_module, 'create_metadata_item')
174197
@patch.object(clone_module, 'list_metadata_items')
175198
def test_compare_create_metadata_items_new_rules(self, mock_list, mock_create):
176199
"""Test comparing and creating new metadata rules"""
177-
source_rules = [
200+
mock_source_metadata_rules = [
178201
{
179202
'external_id': 'rule1',
180203
'condition': 'if',
@@ -195,37 +218,39 @@ def test_compare_create_metadata_items_new_rules(self, mock_list, mock_create):
195218
}
196219
]
197220

198-
destination_rules = []
221+
mock_destination_metadata_rules = []
199222

200-
clone_module.compare_create_metadata_items(source_rules, destination_rules, self.mock_target_config, key="metadata_rules")
223+
clone_module.compare_create_metadata_items(mock_source_metadata_rules, mock_destination_metadata_rules, self.mock_target_config, key="metadata_rules")
201224

202225
# Both rules should be created
203226
self.assertEqual(mock_create.call_count, 2)
204-
mock_create.assert_any_call('add_metadata_rule', source_rules[0])
205-
mock_create.assert_any_call('add_metadata_rule', source_rules[1])
227+
mock_create.assert_any_call('add_metadata_rule', mock_source_metadata_rules[0])
228+
mock_create.assert_any_call('add_metadata_rule', mock_source_metadata_rules[1])
206229

207230
@patch.object(clone_module, 'create_metadata_item')
208231
@patch.object(clone_module, 'list_metadata_items')
209232
def test_compare_create_metadata_items_existing_fields(self, mock_list, mock_create):
210233
"""Test comparing when fields already exist"""
211-
source_fields = [
212-
{
213-
'external_id': 'field1',
214-
'type': 'string',
215-
'label': 'Field 1'
216-
}
217-
]
234+
mock_source_fields = {
235+
'metadata_fields': [
236+
{
237+
'external_id': 'field1',
238+
'type': 'string',
239+
'label': 'Field 1'
240+
}
241+
]
242+
}
218243

219244
# Simulate destination already having the field
220-
destination_fields = [
245+
mock_destination_fields = [
221246
{
222247
'external_id': 'field1',
223248
'type': 'string',
224249
'label': 'Field 1'
225250
}
226251
]
227252

228-
clone_module.compare_create_metadata_items(source_fields, destination_fields, self.mock_target_config, key="metadata_fields")
253+
clone_module.compare_create_metadata_items(mock_source_fields, mock_destination_fields, self.mock_target_config, key="metadata_fields")
229254

230255
# No fields should be created
231256
mock_create.assert_not_called()
@@ -234,7 +259,8 @@ def test_compare_create_metadata_items_existing_fields(self, mock_list, mock_cre
234259
@patch.object(clone_module, 'list_metadata_items')
235260
def test_compare_create_metadata_items_existing_rules(self, mock_list, mock_create):
236261
"""Test comparing when rules already exist"""
237-
source_rules = [
262+
263+
mock_source_metadata_rules = [
238264
{
239265
'external_id': 'rule1',
240266
'condition': 'if',
@@ -247,7 +273,7 @@ def test_compare_create_metadata_items_existing_rules(self, mock_list, mock_crea
247273
]
248274

249275
# Simulate destination already having the rule
250-
destination_rules = [
276+
mock_destination_metadata_rules = [
251277
{
252278
'external_id': 'rule1',
253279
'condition': 'if',
@@ -259,7 +285,7 @@ def test_compare_create_metadata_items_existing_rules(self, mock_list, mock_crea
259285
}
260286
]
261287

262-
clone_module.compare_create_metadata_items(source_rules, destination_rules, self.mock_target_config, key="metadata_rules")
288+
clone_module.compare_create_metadata_items(mock_source_metadata_rules, mock_destination_metadata_rules, self.mock_target_config, key="metadata_rules")
263289

264290
# No rules should be created
265291
mock_create.assert_not_called()
@@ -268,40 +294,42 @@ def test_compare_create_metadata_items_existing_rules(self, mock_list, mock_crea
268294
@patch.object(clone_module, 'list_metadata_items')
269295
def test_compare_create_metadata_items_mixed_scenario(self, mock_list, mock_create):
270296
"""Test comparing with mix of new and existing fields"""
271-
source_fields = [
272-
{
273-
'external_id': 'existing_field',
274-
'type': 'string',
275-
'label': 'Existing Field'
276-
},
277-
{
278-
'external_id': 'new_field',
279-
'type': 'integer',
280-
'label': 'New Field'
281-
}
282-
]
297+
mock_source_fields = {
298+
'metadata_fields': [
299+
{
300+
'external_id': 'field1',
301+
'type': 'string',
302+
'label': 'Field 1'
303+
},
304+
{
305+
'external_id': 'field2',
306+
'type': 'integer',
307+
'label': 'Field 2'
308+
}
309+
]
310+
}
283311

284312
# Simulate destination having only one field
285-
destination_fields = [
313+
mock_destination_fields = [
286314
{
287315
'external_id': 'existing_field',
288316
'type': 'string',
289317
'label': 'Existing Field'
290318
}
291319
]
292320

293-
clone_module.compare_create_metadata_items(source_fields, destination_fields, self.mock_target_config, key="metadata_fields")
321+
clone_module.compare_create_metadata_items(mock_source_fields, mock_destination_fields, self.mock_target_config, key="metadata_fields")
294322

295323
# Only new_field should be created
296-
mock_create.assert_called_once_with(source_fields[1])
324+
mock_create.assert_called_once_with(mock_source_fields[1])
297325

298326
@patch.object(clone_module, 'create_metadata_item')
299327
@patch.object(clone_module, 'list_metadata_items')
300328
def test_compare_create_metadata_items_mixed_rules_scenario(self, mock_list, mock_create):
301329
"""Test comparing with mix of new and existing rules"""
302-
source_rules = [
330+
mock_source_metadata_rules = [
303331
{
304-
'external_id': 'existing_rule',
332+
'external_id': 'rule1',
305333
'condition': 'if',
306334
'metadata_field': {'external_id': 'field1'},
307335
'results': [{
@@ -310,7 +338,7 @@ def test_compare_create_metadata_items_mixed_rules_scenario(self, mock_list, moc
310338
}]
311339
},
312340
{
313-
'external_id': 'new_rule',
341+
'external_id': 'rule2',
314342
'condition': 'if',
315343
'metadata_field': {'external_id': 'field2'},
316344
'results': [{
@@ -321,9 +349,9 @@ def test_compare_create_metadata_items_mixed_rules_scenario(self, mock_list, moc
321349
]
322350

323351
# Simulate destination having only one rule
324-
destination_rules = [
352+
mock_destination_metadata_rules = [
325353
{
326-
'external_id': 'existing_rule',
354+
'external_id': 'rule1',
327355
'condition': 'if',
328356
'metadata_field': {'external_id': 'field1'},
329357
'results': [{
@@ -333,10 +361,10 @@ def test_compare_create_metadata_items_mixed_rules_scenario(self, mock_list, moc
333361
}
334362
]
335363

336-
clone_module.compare_create_metadata_items(source_rules, destination_rules, self.mock_target_config, key="metadata_rules")
364+
clone_module.compare_create_metadata_items(mock_source_metadata_rules, mock_destination_metadata_rules, self.mock_target_config, key="metadata_rules")
337365

338366
# Only new_rule should be created
339-
mock_create.assert_called_once_with('add_metadata_rule', source_rules[1])
367+
mock_create.assert_called_once_with('add_metadata_rule', mock_source_metadata_rules[1])
340368

341369
if __name__ == '__main__':
342370
unittest.main()

0 commit comments

Comments
 (0)