mirror of
https://github.com/graphql-python/graphene.git
synced 2024-11-11 12:16:58 +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