Skip to content

Commit

Permalink
added quote endpoints
Browse files Browse the repository at this point in the history
rename InstantConversion to Conversions
  • Loading branch information
Mihai Moiseanu committed Feb 28, 2024
1 parent 101b014 commit eff8c79
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 17 deletions.
50 changes: 40 additions & 10 deletions mangopay/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ class Meta:


@python_2_unicode_compatible
class InstantConversion(BaseModel):
class Conversion(BaseModel):
author = ForeignKeyField(User, api_name='AuthorId', required=True)
debited_wallet = ForeignKeyField(Wallet, api_name='DebitedWalletId', required=True)
credited_wallet = ForeignKeyField(Wallet, api_name='CreditedWalletId', required=True)
Expand All @@ -303,25 +303,55 @@ class InstantConversion(BaseModel):
status = CharField(api_name='Status', choices=constants.STATUS_CHOICES, default=None)
execution_date = DateTimeField(api_name='ExecutionDate')

def create_instant_conversion(self, **kwargs):
def create_conversion(self, **kwargs):
insert = InsertQuery(self, **kwargs)
insert.insert_query = self.get_field_dict()
insert.identifier = 'CREATE_INSTANT_CONVERSION'
insert.identifier = 'CREATE_CONVERSION'
return insert.execute()

@staticmethod
def get_instant_conversion(id, *args, **kwargs):
def get_conversion(id, *args, **kwargs):
kwargs['id'] = id
select = SelectQuery(InstantConversion, *args, **kwargs)
select.identifier = 'GET_INSTANT_CONVERSION'
select = SelectQuery(Conversion, *args, **kwargs)
select.identifier = 'GET_CONVERSION'
return select.all(*args, **kwargs)

class Meta:
verbose_name = 'instant_conversion'
verbose_name_plural = 'instant_conversions'
verbose_name = 'conversion'
verbose_name_plural = 'conversions'
url = {
'CREATE_INSTANT_CONVERSION': '/instant-conversion',
'GET_INSTANT_CONVERSION': '/instant-conversion/%(id)s'
'CREATE_CONVERSION': '/instant-conversion',
'GET_CONVERSION': '/instant-conversion/%(id)s'
}


class ConversionQuote(BaseModel):
expiration_date = DateTimeField(api_name='ExpirationDate')
status = CharField(api_name='Status', choices=constants.STATUS_CHOICES, default=None)
duration = IntegerField(api_name='Duration')
debited_funds = MoneyField(api_name='DebitedFunds', required=True)
credited_funds = MoneyField(api_name='CreditedFunds', required=True)
conversion_rate = ConversionRateField(api_name='ConversionRateResponse')

def create_conversion_quote(self, **kwargs):
insert = InsertQuery(self, **kwargs)
insert.insert_query = self.get_field_dict()
insert.identifier = 'CREATE_CONVERSION_QUOTE'
return insert.execute()

@staticmethod
def get_conversion_quote(id, *args, **kwargs):
kwargs['id'] = id
select = SelectQuery(ConversionQuote, *args, **kwargs)
select.identifier = 'GET_CONVERSION_QUOTE'
return select.all(*args, **kwargs)

class Meta:
verbose_name = 'conversion_quote'
verbose_name_plural = 'conversions'
url = {
'CREATE_CONVERSION_QUOTE': '/conversions/quote',
'GET_CONVERSION_QUOTE': '/conversions/quote/%(id)s'
}


Expand Down
47 changes: 40 additions & 7 deletions tests/test_instant_conversion.py → tests/test_conversion.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from mangopay.resources import ConversionQuote
from mangopay.utils import Money
from tests.resources import ConversionRate, InstantConversion, Wallet
from tests.resources import ConversionRate, Conversion, Wallet
from tests.test_base import BaseTestLive


class InstantConversionTest(BaseTestLive):
class ConversionsTest(BaseTestLive):

def test_get_conversion_rate(self):
conversion_rate = ConversionRate()
Expand Down Expand Up @@ -32,15 +33,15 @@ def test_create_instant_conversion(self):
debited_funds.currency = 'EUR'
debited_funds.amount = 79

instant_conversion = InstantConversion()
instant_conversion = Conversion()
instant_conversion.author = user
instant_conversion.credited_wallet = credited_wallet
instant_conversion.debited_wallet = BaseTestLive.create_new_wallet_with_money()
instant_conversion.credited_funds = credited_funds
instant_conversion.debited_funds = debited_funds
instant_conversion.tag = "instant conversion test"

instant_conversion_response = instant_conversion.create_instant_conversion()
instant_conversion_response = instant_conversion.create_conversion()

self.assertIsNotNone(instant_conversion_response)
self.assertIsNotNone(instant_conversion_response['debited_funds'].amount)
Expand All @@ -63,19 +64,51 @@ def test_get_instant_conversion(self):
debited_funds.currency = 'EUR'
debited_funds.amount = 79

instant_conversion = InstantConversion()
instant_conversion = Conversion()
instant_conversion.author = user
instant_conversion.credited_wallet = credited_wallet
instant_conversion.debited_wallet = BaseTestLive.create_new_wallet_with_money()
instant_conversion.credited_funds = credited_funds
instant_conversion.debited_funds = debited_funds
instant_conversion.tag = "instant conversion test"

instant_conversion_response = instant_conversion.create_instant_conversion()
returned_conversion_response = InstantConversion.get_instant_conversion(instant_conversion_response['id'])
instant_conversion_response = instant_conversion.create_conversion()
returned_conversion_response = Conversion.get_conversion(instant_conversion_response['id'])

self.assertIsNotNone(returned_conversion_response)
self.assertIsNotNone(returned_conversion_response.data[0])
self.assertIsNotNone(returned_conversion_response.data[0].debited_funds.amount)
self.assertIsNotNone(returned_conversion_response.data[0].credited_funds.amount)
self.assertEqual(returned_conversion_response.data[0].status, 'SUCCEEDED')

def test_create_conversion_quote(self):
conversion_quote = ConversionQuote()
conversion_quote.credited_funds = Money(currency='USD')
conversion_quote.debited_funds = Money(currency='GBP', amount=100)
conversion_quote.duration = 90
conversion_quote.tag = "Created using the Mangopay Python SDK"

created_conversion_quote = conversion_quote.create_conversion_quote()

self.assertIsNotNone(created_conversion_quote)
self.assertIsNotNone(created_conversion_quote['debited_funds'])
self.assertIsNotNone(created_conversion_quote['credited_funds'])
self.assertIsNotNone(created_conversion_quote['conversion_rate'])
self.assertEqual('ACTIVE', created_conversion_quote['status'])

def test_get_conversion_quote(self):
conversion_quote = ConversionQuote()
conversion_quote.credited_funds = Money(currency='USD')
conversion_quote.debited_funds = Money(currency='GBP', amount=100)
conversion_quote.duration = 90
conversion_quote.tag = "Created using the Mangopay Python SDK"

created_conversion_quote = conversion_quote.create_conversion_quote()
returned_conversion_quote = ConversionQuote.get_conversion_quote(created_conversion_quote['id'])
response = returned_conversion_quote.data[0]
self.assertIsNotNone(response)
self.assertIsNotNone(response.debited_funds)
self.assertIsNotNone(response.credited_funds)
self.assertIsNotNone(response.conversion_rate)
self.assertEqual('ACTIVE', response.status)

0 comments on commit eff8c79

Please sign in to comment.