Skip to content

Commit

Permalink
Merge pull request #11 from nuhamozaini/manual_payment_feature
Browse files Browse the repository at this point in the history
Manual Payment modifications
  • Loading branch information
ecleel authored Nov 18, 2019
2 parents 9c16a68 + aae15c0 commit dd39a64
Show file tree
Hide file tree
Showing 7 changed files with 74 additions and 6 deletions.
2 changes: 1 addition & 1 deletion moyasar/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def fill_object(object, data):
object.__setattr__(key, data[key])


def request(http_verb, url, data, key=None):
def request(http_verb, url, data=None, key=None):
moyasar_key = key or api_key

if moyasar_key is None:
Expand Down
16 changes: 16 additions & 0 deletions moyasar/actions/capture.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import moyasar
import json


class Capture:
def capture_url(self, id):
return f'{moyasar.resource_url(self.__class__.__name__)}/{id}/capture'.lower()

def capture(self, amount=None):
data = None
if amount is not None:
data = {'amount': amount}

response = moyasar.request('POST', self.capture_url(self.id), data)
response = json.loads(response.text)
moyasar.fill_object(self, response)
12 changes: 12 additions & 0 deletions moyasar/actions/void.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import moyasar
import json


class Void:
def void_url(self, id):
return f'{moyasar.resource_url(self.__class__.__name__)}/{id}/void'.lower()

def void(self):
response = moyasar.request('POST', self.void_url(self.id))
response = json.loads(response.text)
moyasar.fill_object(self, response)
16 changes: 14 additions & 2 deletions moyasar/payment.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

from moyasar.resource import Resource
from moyasar.actions.refund import Refund
from moyasar.actions.capture import Capture
from moyasar.actions.void import Void
from moyasar.helpers import Constructor
from moyasar.helpers import Format

Expand Down Expand Up @@ -36,7 +38,7 @@ class Sadad(Source):
pass


class Payment(Resource, Refund, Format):
class Payment(Resource, Refund, Capture, Void, Format):

def __init__(self, data):
super().__init__(data)
Expand All @@ -45,4 +47,14 @@ def __init__(self, data):
def refund(self, amount=None):
super().refund(amount)
self.source = Source.build(self.source)
return self
return self

def capture(self, amount=None):
super().capture(amount)
self.source = Source.build(self.source)
return self

def void(self):
super().void()
self.source = Source.build(self.source)
return self
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ six==1.12.0
smmap2==2.0.5
stevedore==1.30.0
tornado==4.3
urllib3==1.24.1
urllib3==1.24.2
wrapt==1.11.1
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
long_description = fh.read()
setuptools.setup(
name="moyasar",
version="0.6.1",
version="0.6.5",
author="Moyasar",
author_email="[email protected]",
description="Moyasar Python language wrapper",
Expand Down
30 changes: 29 additions & 1 deletion tests/moyasar/payment_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,32 @@ def test_eqaulity_check_differentiate_non_identical_payments():
if key == 'source':
for k, v in val.__dict__.items():
payment_two_values.append(v)
assert payment_one_values != payment_two_values
assert payment_one_values != payment_two_values


def test_capture_should_return_payment_object_upon_success():
id = '1b82356d-b5fd-46f8-bde9-3680d62f289a'
ss.stub_server_request("get", moyasar.Payment.fetch_url(id),
resource=f.payment, status=200)
moyasar.api_key = 'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
payment = moyasar.Payment.fetch(id)
ss.stub_server_request("post", f'{moyasar.api_url}/payments/{payment.id}/capture',
resource=f.payment, status=200)
moyasar.api_key = 'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
captured = payment.capture()
assert isinstance(captured, moyasar.Payment)


def test_void_should_return_payment_object_upon_success():
id = '1b82356d-b5fd-46f8-bde9-3680d62f289a'
ss.stub_server_request("get", moyasar.Payment.fetch_url(id),
resource=f.payment, status=200)
moyasar.api_key = 'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
payment = moyasar.Payment.fetch(id)
ss.stub_server_request("post", f'{moyasar.api_url}/payments/{payment.id}/void',
resource=f.payment, status=200)
moyasar.api_key = 'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
voided = payment.void()
assert isinstance(voided, moyasar.Payment)


0 comments on commit dd39a64

Please sign in to comment.