Skip to content

Commit d8176da

Browse files
authored
Merge pull request #23 from payjp/add-statement-master
add statement API (top level resource)
2 parents af8087a + d87ded3 commit d8176da

File tree

4 files changed

+37
-8
lines changed

4 files changed

+37
-8
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
strategy:
1010
fail-fast: false
1111
matrix:
12-
python-version: ["pypy3", 3.6, 3.7, 3.8, 3.9]
12+
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
1313

1414
steps:
1515
- uses: actions/checkout@v2

payjp/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
retry_max_delay = 32
1212

1313
# TODO include Card?
14-
__all__ = ['Account', 'Card', 'Charge', 'Customer', 'Event', 'Plan', 'Subscription', 'Token', 'Transfer']
14+
__all__ = ['Account', 'Card', 'Charge', 'Customer', 'Event', 'Plan', 'Subscription', 'Token', 'Transfer', 'Statement']
1515

1616
# Resource
1717
from payjp.resource import ( # noqa
18-
Account, Charge, Customer, Event, Plan, Subscription, Token, Transfer)
18+
Account, Charge, Customer, Event, Plan, Subscription, Token, Transfer, Statement)
1919

payjp/resource.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def convert_to_payjp_object(resp, api_key, account, api_base=None):
1616
'charge': Charge, 'customer': Customer,
1717
'event': Event, 'plan': Plan,
1818
'subscription': Subscription, 'token': Token,
19-
'transfer': Transfer, 'list': ListObject}
19+
'transfer': Transfer, 'statement': Statement, 'list': ListObject}
2020

2121
if isinstance(resp, list):
2222
return [convert_to_payjp_object(i, api_key, account, api_base) for i in resp]
@@ -422,3 +422,10 @@ def cancel(self, **kwargs):
422422
class Transfer(ListableAPIResource):
423423
pass
424424

425+
426+
class Statement(ListableAPIResource):
427+
428+
def statement_urls(self, **kwargs):
429+
url = self.instance_url() + '/statement_urls'
430+
self.refresh_from(self.request('post', url, kwargs))
431+
return self

payjp/test/test_resources.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
# coding: utf-8
22

3-
import json
43
import pickle
54
import sys
6-
import time
7-
import datetime
85
import unittest
96

107
import payjp
@@ -668,10 +665,11 @@ def test_delete(self):
668665

669666

670667
class PayjpResourceTest(PayjpApiTestCase):
668+
response = {}
671669

672670
def setUp(self):
673671
super(PayjpResourceTest, self).setUp()
674-
self.mock_response({})
672+
self.mock_response(self.response)
675673

676674

677675
class ChargeTest(PayjpResourceTest):
@@ -1121,5 +1119,29 @@ def test_individual_delete(self):
11211119
None
11221120
)
11231121

1122+
1123+
class StatementTest(PayjpResourceTest):
1124+
response = {
1125+
'object': 'statement',
1126+
"id": "st_xxx",
1127+
}
1128+
1129+
def test_statement_urls(self):
1130+
statement = payjp.Statement.retrieve('st_xxx')
1131+
self.requestor_mock.request.assert_called_with(
1132+
'get', '/v1/statements/st_xxx', {}, None)
1133+
self.assertTrue(isinstance(statement, payjp.Statement))
1134+
1135+
statement.statement_urls(platformer=True)
1136+
self.requestor_mock.request.assert_called_with(
1137+
'post',
1138+
'/v1/statements/st_xxx/statement_urls',
1139+
{
1140+
'platformer': True,
1141+
},
1142+
None
1143+
)
1144+
1145+
11241146
if __name__ == '__main__':
11251147
unittest.main()

0 commit comments

Comments
 (0)