Skip to content

Commit 772b3e9

Browse files
authored
Add support for reorder_metadata_fields Admin API
1 parent 648c55e commit 772b3e9

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

cloudinary/api.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,3 +657,17 @@ def reorder_metadata_field_datasource(field_external_id, order_by, direction=Non
657657
uri = [field_external_id, 'datasource', 'order']
658658
params = {'order_by': order_by, 'direction': direction}
659659
return call_metadata_api('post', uri, params, **options)
660+
661+
662+
def reorder_metadata_fields(order_by, direction=None, **options):
663+
"""Reorders metadata fields.
664+
665+
:param order_by: Criteria for the order (one of the fields 'label', 'external_id', 'created_at').
666+
:param direction: Optional (gets either asc or desc).
667+
:param options: Additional options.
668+
669+
:rtype: Response
670+
"""
671+
uri = ['reorder']
672+
params = {'order_by': order_by, 'direction': direction}
673+
return call_metadata_api('put', uri, params, **options)

test/test_metadata.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from cloudinary import api
1212
from cloudinary.exceptions import BadRequest, NotFound
1313
from test.helper_test import (
14-
UNIQUE_TEST_ID, get_uri, get_params, get_method, api_response_mock, ignore_exception
14+
UNIQUE_TEST_ID, get_uri, get_params, get_method, api_response_mock, ignore_exception, get_json_body
1515
)
1616

1717
MOCK_RESPONSE = api_response_mock()
@@ -486,6 +486,45 @@ def test_order_by_desc_in_a_metadata_field_data_source(self):
486486

487487
self.assertEqual(result['values'][0]['value'], DATASOURCE_MULTIPLE[-1]['value'])
488488

489+
@patch("urllib3.request.RequestMethods.request")
490+
@unittest.skipUnless(cloudinary.config().api_secret, "requires api_key/api_secret")
491+
def test_reorder_metadata_fields_by_label(self, mocker):
492+
"""Test the reorder of metadata fields for label order by asc"""
493+
mocker.return_value = MOCK_RESPONSE
494+
api.reorder_metadata_fields('label', 'asc')
495+
args, kargs = mocker.call_args
496+
497+
self.assertTrue(get_uri(args).endswith("/metadata_fields/reorder"))
498+
self.assertEqual(get_method(mocker), "PUT")
499+
self.assertEqual(get_json_body(mocker)['order_by'], "label")
500+
self.assertEqual(get_json_body(mocker)['direction'], "asc")
501+
502+
@patch("urllib3.request.RequestMethods.request")
503+
@unittest.skipUnless(cloudinary.config().api_secret, "requires api_key/api_secret")
504+
def test_reorder_metadata_fields_by_external_id(self, mocker):
505+
"""Test the reorder of metadata fields for external_id order by desc"""
506+
mocker.return_value = MOCK_RESPONSE
507+
api.reorder_metadata_fields('external_id', 'desc')
508+
args, kargs = mocker.call_args
509+
510+
self.assertTrue(get_uri(args).endswith("/metadata_fields/reorder"))
511+
self.assertEqual(get_method(mocker), "PUT")
512+
self.assertEqual(get_json_body(mocker)['order_by'], "external_id")
513+
self.assertEqual(get_json_body(mocker)['direction'], "desc")
514+
515+
@patch("urllib3.request.RequestMethods.request")
516+
@unittest.skipUnless(cloudinary.config().api_secret, "requires api_key/api_secret")
517+
def test_reorder_metadata_fields_by_created_at(self, mocker):
518+
"""Test the reorder of metadata fields for created_at order by asc"""
519+
mocker.return_value = MOCK_RESPONSE
520+
api.reorder_metadata_fields('created_at', 'asc')
521+
args, kargs = mocker.call_args
522+
523+
self.assertTrue(get_uri(args).endswith("/metadata_fields/reorder"))
524+
self.assertEqual(get_method(mocker), "PUT")
525+
self.assertEqual(get_json_body(mocker)['order_by'], "created_at")
526+
self.assertEqual(get_json_body(mocker)['direction'], "asc")
527+
489528

490529
if __name__ == "__main__":
491530
unittest.main()

0 commit comments

Comments
 (0)