diff --git a/.travis.yml b/.travis.yml index 8d6f0b86f..e68b1b09b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ cache: env: global: - - STRIPE_MOCK_VERSION=0.25.0 + - STRIPE_MOCK_VERSION=0.26.0 before_install: # Unpack and start stripe-mock so that the test suite can talk to it diff --git a/stripe/api_resources/__init__.py b/stripe/api_resources/__init__.py index e25a6b24b..fc39e42e3 100644 --- a/stripe/api_resources/__init__.py +++ b/stripe/api_resources/__init__.py @@ -50,3 +50,4 @@ from stripe.api_resources.topup import Topup from stripe.api_resources.transfer import Transfer from stripe.api_resources.usage_record import UsageRecord +from stripe.api_resources.usage_record_summary import UsageRecordSummary diff --git a/stripe/api_resources/subscription_item.py b/stripe/api_resources/subscription_item.py index 8b3e3761a..4d340801a 100644 --- a/stripe/api_resources/subscription_item.py +++ b/stripe/api_resources/subscription_item.py @@ -9,3 +9,7 @@ class SubscriptionItem(CreateableAPIResource, DeletableAPIResource, UpdateableAPIResource, ListableAPIResource): OBJECT_NAME = 'subscription_item' + + def usage_record_summaries(self, **params): + return self.request( + 'get', self.instance_url() + '/usage_record_summaries', params) diff --git a/stripe/api_resources/usage_record_summary.py b/stripe/api_resources/usage_record_summary.py new file mode 100644 index 000000000..a8033bd0d --- /dev/null +++ b/stripe/api_resources/usage_record_summary.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import, division, print_function + +from stripe.stripe_object import StripeObject + + +class UsageRecordSummary(StripeObject): + OBJECT_NAME = 'usage_record_summary' diff --git a/stripe/util.py b/stripe/util.py index 32ed1ace3..da49e9c30 100644 --- a/stripe/util.py +++ b/stripe/util.py @@ -207,6 +207,8 @@ def load_object_classes(): api_resources.Topup.OBJECT_NAME: api_resources.Topup, api_resources.Transfer.OBJECT_NAME: api_resources.Transfer, api_resources.UsageRecord.OBJECT_NAME: api_resources.UsageRecord, + api_resources.UsageRecordSummary.OBJECT_NAME: + api_resources.UsageRecordSummary, } diff --git a/tests/api_resources/test_usage_record_summary.py b/tests/api_resources/test_usage_record_summary.py new file mode 100644 index 000000000..26c1207ab --- /dev/null +++ b/tests/api_resources/test_usage_record_summary.py @@ -0,0 +1,16 @@ +from __future__ import absolute_import, division, print_function + +import stripe + + +class TestUsageRecordSummary(object): + def test_is_listable(self, request_mock): + resource = stripe.SubscriptionItem.retrieve('si_123') + usage_record_summaries = resource.usage_record_summaries() + request_mock.assert_requested( + 'get', + '/v1/subscription_items/si_123/usage_record_summaries' + ) + assert isinstance(usage_record_summaries.data, list) + assert isinstance(usage_record_summaries.data[0], + stripe.UsageRecordSummary) diff --git a/tests/conftest.py b/tests/conftest.py index 7a98c190c..6da4b5832 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -13,7 +13,7 @@ from tests.request_mock import RequestMock -MOCK_MINIMUM_VERSION = '0.25.0' +MOCK_MINIMUM_VERSION = '0.26.0' MOCK_PORT = os.environ.get('STRIPE_MOCK_PORT', 12111)