You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							100 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
	
	
							100 lines
						
					
					
						
							3.6 KiB
						
					
					
				import dynamix_sdk.types as sdk_types
 | 
						|
from dynamix_sdk.utils import gen_cls_name_from_url_path
 | 
						|
 | 
						|
 | 
						|
def test_api_class_naming(api_groups):
 | 
						|
    for api_group in api_groups:
 | 
						|
        correct_class_name = f'{api_group.name.capitalize()}API'
 | 
						|
        assert api_group.cls.__qualname__ == correct_class_name, (
 | 
						|
            f'\nAPI group: {api_group.name}'
 | 
						|
            f'\nCorrect API class name: {correct_class_name}'
 | 
						|
        )
 | 
						|
 | 
						|
        for api_subgroup in api_group.subgroups:
 | 
						|
            correct_class_name = (
 | 
						|
                f'{api_group.name.capitalize()}'
 | 
						|
                f'{api_subgroup.name.capitalize()}'
 | 
						|
                f'API'
 | 
						|
            )
 | 
						|
            assert api_subgroup.cls.__qualname__ == correct_class_name, (
 | 
						|
                f'\nAPI group: {api_group.name}'
 | 
						|
                f'\nAPI subgroup: {api_subgroup.name}'
 | 
						|
                f'\nCorrect API class name: {correct_class_name}'
 | 
						|
            )
 | 
						|
 | 
						|
 | 
						|
def test_protocol_class_naming(sdk_dx_functions):
 | 
						|
    for sdk_func in sdk_dx_functions:
 | 
						|
        correct_class_name = gen_cls_name_from_url_path(
 | 
						|
            url_path=sdk_func.url_path,
 | 
						|
            postfix='Protocol',
 | 
						|
        )
 | 
						|
 | 
						|
        assert sdk_func.proto_cls.__qualname__ == correct_class_name, (
 | 
						|
            f'\nFunction call attributes: {sdk_func.call_attrs}'
 | 
						|
            f'\nURL path: {sdk_func.url_path}'
 | 
						|
            f'\nCorrect Protocol class name: {correct_class_name}'
 | 
						|
        )
 | 
						|
 | 
						|
 | 
						|
def get_subclasses(cls: type, result: list[type] | None = None):
 | 
						|
    if result:
 | 
						|
        _result = result
 | 
						|
    else:
 | 
						|
        _result: list[type] = []
 | 
						|
 | 
						|
    for subclass in cls.__subclasses__():
 | 
						|
        if issubclass(subclass.__bases__[0], cls):
 | 
						|
            _result.append(subclass)
 | 
						|
        _result += get_subclasses(subclass)
 | 
						|
 | 
						|
    return _result
 | 
						|
 | 
						|
 | 
						|
def test_params_nested_model_class_naming():
 | 
						|
    base_cls = sdk_types.BaseAPIParamsNestedModel
 | 
						|
    for params_nm_cls in get_subclasses(base_cls):
 | 
						|
        suffix = 'APIParamsNM'
 | 
						|
        assert params_nm_cls.__qualname__.endswith(suffix), (
 | 
						|
            f'Class {params_nm_cls.__qualname__}:'
 | 
						|
            f' all subclasses of {base_cls.__qualname__}'
 | 
						|
            f' must have a name with suffix "{suffix}".'
 | 
						|
        )
 | 
						|
 | 
						|
 | 
						|
def test_result_class_naming(sdk_dx_functions):
 | 
						|
    for sdk_func in sdk_dx_functions:
 | 
						|
        if issubclass(sdk_func.result_cls, sdk_types.BaseAPIResultModel):
 | 
						|
            result_cls_postfix = 'ResultModel'
 | 
						|
        elif issubclass(sdk_func.result_cls, sdk_types.BaseAPIResultStr):
 | 
						|
            result_cls_postfix = 'ResultStr'
 | 
						|
        elif issubclass(sdk_func.result_cls, sdk_types.BaseAPIResultInt):
 | 
						|
            result_cls_postfix = 'ResultInt'
 | 
						|
        elif issubclass(sdk_func.result_cls, sdk_types.BaseAPIResultBool):
 | 
						|
            result_cls_postfix = 'ResultBool'
 | 
						|
        else:
 | 
						|
            raise TypeError
 | 
						|
 | 
						|
        result_cls_name = gen_cls_name_from_url_path(
 | 
						|
            url_path=sdk_func.url_path,
 | 
						|
            postfix=result_cls_postfix,
 | 
						|
        )
 | 
						|
        assert sdk_func.result_cls.__qualname__ == result_cls_name, (
 | 
						|
            f'\nFunction call attributes: {sdk_func.call_attrs}'
 | 
						|
            f'\nURL path: {sdk_func.url_path}'
 | 
						|
            f'\nResult base class:'
 | 
						|
            f' {sdk_func.result_cls.__bases__[0].__qualname__}'
 | 
						|
            f'\nCorrect result class name: {result_cls_name}'
 | 
						|
        )
 | 
						|
 | 
						|
 | 
						|
def test_result_nested_model_class_naming():
 | 
						|
    base_cls = sdk_types.BaseAPIResultNestedModel
 | 
						|
    for result_nm_cls in get_subclasses(base_cls):
 | 
						|
        suffix = 'APIResultNM'
 | 
						|
        assert result_nm_cls.__qualname__.endswith(suffix), (
 | 
						|
            f'Class {result_nm_cls.__qualname__}:'
 | 
						|
            f' all subclasses of {base_cls.__qualname__}'
 | 
						|
            f' must have a name with suffix "{suffix}".'
 | 
						|
        )
 |