def test_get_sorted_when_many_fields(self): config = get_sorted_config({ 'separator': '/', 'constant': False, 'min': -10, 'type': 'int', 'default': 3, 'name': 'Param X', 'values': [], 'required': True, 'max': 5, 'param': '-i', 'description': 'guess number' }) expected = OrderedDict( [('name', 'Param X'), ('required', True), ('param', '-i'), ('type', 'int'), ('default', 3), ('constant', False), ('description', 'guess number'), ('values', []), ('min', -10), ('max', 5), ('separator', '/')]) self.assertEqual(expected, config)
def get_sorted_config(config): key_order = ['name', 'script_path', 'working_directory', 'hidden', 'description', 'group', 'allowed_users', 'admin_users', 'schedulable', 'include', 'output_files', 'requires_terminal', 'output_format', 'parameters'] def get_order(key): if key == 'parameters': return 99 elif key in key_order: return key_order.index(key) else: return 50 sorted_config = OrderedDict(sorted(config.items(), key=lambda item: get_order(item[0]))) if config.get('parameters'): for i, param in enumerate(config['parameters']): config['parameters'][i] = parameter_config.get_sorted_config(param) return sorted_config
def test_get_sorted_when_3_fields(self): config = get_sorted_config({'type': 'int', 'name': 'Param X', 'required': True}) expected = OrderedDict( [('name', 'Param X'), ('required', True), ('type', 'int')]) self.assertEqual(expected, config)
def test_get_sorted_when_unknown_fields(self): config = get_sorted_config({ 'key1': 'abc', 'file_recursive': True, 'key2': 123, 'name': 'Param X', 'key3': [] }) expected = OrderedDict([('name', 'Param X'), ('file_recursive', True), ('key1', 'abc'), ('key2', 123), ('key3', [])]) self.assertEqual(expected.popitem(last=False), config.popitem(last=False)) self.assertEqual(expected.popitem(last=False), config.popitem(last=False)) self.assertCountEqual(expected.items(), config.items())