mirror of
				https://github.com/graphql-python/graphene.git
				synced 2025-10-31 07:57:26 +03:00 
			
		
		
		
	Improved test coverage
This commit is contained in:
		
							parent
							
								
									eff882e5a5
								
							
						
					
					
						commit
						7e901f83ae
					
				|  | @ -1,39 +0,0 @@ | |||
| from ..pyutils.compat import signature | ||||
| from functools import wraps, partial | ||||
| 
 | ||||
| 
 | ||||
| def resolver_from_annotations(func): | ||||
|     from ..types import Context, ResolveInfo | ||||
| 
 | ||||
|     func_signature = signature(func) | ||||
| 
 | ||||
|     _context_var = None | ||||
|     _info_var = None | ||||
|     for key, parameter in func_signature.parameters.items(): | ||||
|         param_type = parameter.annotation | ||||
|         if param_type is Context: | ||||
|             _context_var = key | ||||
|         elif param_type is ResolveInfo: | ||||
|             _info_var = key | ||||
|         continue | ||||
| 
 | ||||
|     # We generate different functions as it will be faster | ||||
|     # than calculating the args on the fly when executing | ||||
|     # the function resolver. | ||||
|     if _context_var and _info_var: | ||||
|         def inner(root, args, context, info): | ||||
|             return func(root, **dict(args, **{_info_var: info, _context_var: context})) | ||||
|     elif _context_var: | ||||
|         def inner(root, args, context, info): | ||||
|             return func(root, **dict(args, **{_context_var: context})) | ||||
|     elif _info_var: | ||||
|         def inner(root, args, context, info): | ||||
|             return func(root, **dict(args, **{_info_var: info})) | ||||
|     else: | ||||
|         def inner(root, args, context, info): | ||||
|             return func(root, **args) | ||||
| 
 | ||||
|     if isinstance(func, partial): | ||||
|         return inner | ||||
| 
 | ||||
|     return wraps(func)(inner) | ||||
							
								
								
									
										65
									
								
								graphene/utils/tests/test_deprecated.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								graphene/utils/tests/test_deprecated.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,65 @@ | |||
| import pytest | ||||
| from .. import deprecated | ||||
| from ..deprecated import deprecated as deprecated_decorator, warn_deprecation | ||||
| 
 | ||||
| 
 | ||||
| def test_warn_deprecation(mocker): | ||||
|     mocker.patch.object(deprecated.warnings, 'warn') | ||||
|      | ||||
|     warn_deprecation("OH!") | ||||
|     deprecated.warnings.warn.assert_called_with('OH!', stacklevel=2, category=DeprecationWarning) | ||||
| 
 | ||||
| 
 | ||||
| def test_deprecated_decorator(mocker): | ||||
|     mocker.patch.object(deprecated, 'warn_deprecation') | ||||
|      | ||||
|     @deprecated_decorator | ||||
|     def my_func(): | ||||
|         return True | ||||
| 
 | ||||
|     result = my_func() | ||||
|     assert result | ||||
|     deprecated.warn_deprecation.assert_called_with("Call to deprecated function my_func.") | ||||
| 
 | ||||
| 
 | ||||
| def test_deprecated_class(mocker): | ||||
|     mocker.patch.object(deprecated, 'warn_deprecation') | ||||
|      | ||||
|     @deprecated_decorator | ||||
|     class X: | ||||
|         pass | ||||
| 
 | ||||
|     result = X() | ||||
|     assert result | ||||
|     deprecated.warn_deprecation.assert_called_with("Call to deprecated class X.") | ||||
| 
 | ||||
| 
 | ||||
| def test_deprecated_decorator_text(mocker): | ||||
|     mocker.patch.object(deprecated, 'warn_deprecation') | ||||
|      | ||||
|     @deprecated_decorator("Deprecation text") | ||||
|     def my_func(): | ||||
|         return True | ||||
| 
 | ||||
|     result = my_func() | ||||
|     assert result | ||||
|     deprecated.warn_deprecation.assert_called_with("Call to deprecated function my_func (Deprecation text).") | ||||
| 
 | ||||
| 
 | ||||
| def test_deprecated_class_text(mocker): | ||||
|     mocker.patch.object(deprecated, 'warn_deprecation') | ||||
|      | ||||
|     @deprecated_decorator("Deprecation text") | ||||
|     class X: | ||||
|         pass | ||||
| 
 | ||||
|     result = X() | ||||
|     assert result | ||||
|     deprecated.warn_deprecation.assert_called_with("Call to deprecated class X (Deprecation text).") | ||||
| 
 | ||||
| 
 | ||||
| def test_deprecated_other_object(mocker): | ||||
|     mocker.patch.object(deprecated, 'warn_deprecation') | ||||
|      | ||||
|     with pytest.raises(TypeError) as exc_info: | ||||
|         deprecated_decorator({}) | ||||
|  | @ -4,10 +4,12 @@ from .. import deprecated | |||
| 
 | ||||
| def test_resolve_only_args(mocker): | ||||
|     mocker.patch.object(deprecated, 'warn_deprecation') | ||||
|     def resolver(*args, **kwargs): | ||||
|         return kwargs | ||||
|     def resolver(root, **args): | ||||
|         return root, args | ||||
| 
 | ||||
|     my_data = {'one': 1, 'two': 2} | ||||
| 
 | ||||
|     wrapped = resolve_only_args(resolver) | ||||
|     wrapped_resolver = resolve_only_args(resolver) | ||||
|     assert deprecated.warn_deprecation.called | ||||
|     result = wrapped_resolver(1, 2, a=3) | ||||
|     assert result == (1, {'a': 3}) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user