Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/stripe/api_resources/abstract/test_helpers.py: 51%
31 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1from __future__ import absolute_import, division, print_function
3from stripe import error, util, six
4from stripe.six.moves.urllib.parse import quote_plus
5from stripe.api_resources.abstract import APIResource
8class APIResourceTestHelpers:
9 """
10 The base type for the TestHelper nested classes.
11 Handles request URL generation for test_helper custom methods.
12 Should be used in combination with the @test_helpers decorator.
14 @test_helpers
15 class Foo(APIResource):
16 class TestHelpers(APIResourceTestHelpers):
17 """
19 def __init__(self, resource):
20 self.resource = resource
22 @classmethod
23 def class_url(cls):
24 if cls == APIResourceTestHelpers:
25 raise NotImplementedError(
26 "APIResourceTestHelpers is an abstract class. You should perform "
27 "actions on its subclasses (e.g. Charge, Customer)"
28 )
29 # Namespaces are separated in object names with periods (.) and in URLs
30 # with forward slashes (/), so replace the former with the latter.
31 base = cls._resource_cls.OBJECT_NAME.replace(".", "/")
32 return "/v1/test_helpers/%ss" % (base,)
34 def instance_url(self):
35 id = self.resource.get("id")
37 if not isinstance(id, six.string_types):
38 raise error.InvalidRequestError(
39 "Could not determine which URL to request: %s instance "
40 "has invalid ID: %r, %s. ID should be of type `str` (or"
41 " `unicode`)" % (type(self).__name__, id, type(id)),
42 "id",
43 )
45 id = util.utf8(id)
46 base = self.class_url()
47 extn = quote_plus(id)
48 return "%s/%s" % (base, extn)
51def test_helpers(cls):
52 """
53 test_helpers decorator adds a test_helpers property and
54 wires the parent resource class to the nested TestHelpers class.
56 Should only be used on types that inherit from APIResource.
58 @test_helpers
59 class Foo(APIResource):
60 class TestHelpers(APIResourceTestHelpers):
61 """
63 def test_helpers_getter(self):
64 return self.TestHelpers(self)
66 if not issubclass(cls, APIResource): 66 ↛ 67line 66 didn't jump to line 67, because the condition on line 66 was never true
67 raise ValueError(
68 "Could not apply @test_helpers decorator to %r."
69 " The class should a subclass of APIResource." % cls
70 )
72 cls.TestHelpers._resource_cls = cls
73 cls.TestHelpers._static_request = cls._static_request
74 cls.TestHelpers._static_request_stream = cls._static_request_stream
76 cls.test_helpers = property(test_helpers_getter)
77 return cls