From 9f8cd16c3561917921fb546c88c5f9a876f43e00 Mon Sep 17 00:00:00 2001 From: som-m Date: Sun, 31 Jan 2021 15:12:06 +0700 Subject: [PATCH] Add retrieve method for Source --- omise/__init__.py | 15 +++++++++++++++ omise/test/test_source.py | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/omise/__init__.py b/omise/__init__.py index c318116..fb73722 100644 --- a/omise/__init__.py +++ b/omise/__init__.py @@ -1749,12 +1749,27 @@ class Source(_MainResource, Base): ) """ + @classmethod + def _instance_path(cls, source_id): + return ('sources', source_id) + @classmethod def create(cls, **kwargs): return _as_object( cls._request('post', 'sources', kwargs)) + @classmethod + def retrieve(cls, source_id): + """Retrieve the source details for the given :param:`source_id`. + + :param source_id: a source id to retrieve. + :type source_id: str + :rtype: Source + """ + return _as_object( + cls._request('get', + cls._instance_path(source_id))) class Transfer(_MainResource, Base): """API class representing a transfer. diff --git a/omise/test/test_source.py b/omise/test/test_source.py index a2b5b5e..7879cab 100644 --- a/omise/test/test_source.py +++ b/omise/test/test_source.py @@ -79,3 +79,27 @@ def test_create_offline(self, api_call): 'type': 'tesco_lotus' } ) + + @mock.patch('requests.get') + def test_retrieve(self, api_call): + class_ = self._getTargetClass() + self.mockResponse(api_call, """{ + "object": "source", + "id": "src_test", + "type": "internet_banking_test", + "flow": "redirect", + "amount": 100000, + "currency": "thb" + }""") + + source = class_.retrieve('src_test') + self.assertTrue(isinstance(source, class_)) + self.assertEqual(source.id, 'src_test') + self.assertEqual(source.type, 'internet_banking_test') + self.assertEqual(source.flow, 'redirect') + self.assertEqual(source.amount, 100000) + self.assertEqual(source.currency, 'thb') + self.assertRequest( + api_call, + 'https://api.omise.co/sources/src_test' + )