@@ -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
341369if __name__ == '__main__' :
342370 unittest .main ()
0 commit comments