Changeset 12696 for main/waeup.ikoba
- Timestamp:
- 9 Mar 2015, 00:53:07 (10 years ago)
- Location:
- main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/payments
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/payments/payment.py
r12671 r12696 25 25 from zope.component import getUtilitiesFor 26 26 from zope.event import notify 27 from waeup.ikoba.interfaces import MessageFactory as _ 27 28 from waeup.ikoba.utils.helpers import attrs_to_fields 29 from waeup.ikoba.utils.logger import Logger 28 30 from waeup.ikoba.payments.interfaces import ( 29 31 IPayment, STATE_UNPAID, STATE_FAILED, STATE_PAID, … … 31 33 IPaymentGatewayServicesLister, 32 34 ) 33 from waeup.ikoba.utils.logger import Logger 35 36 37 def format_payment_item_values(payment_item_values, currency): 38 """Format tuples (description, currency, amount) for output. 39 40 `currency` passed in is the 'target' currency. 41 42 Returns a list of formated values. Last item is total sum. 43 XXX: we do not really respect currency. If different items 44 have different currencies, we are choked. 45 """ 46 result = [] 47 total = decimal.Decimal("0.00") 48 for descr, item_currency, amount in payment_item_values: 49 total += amount 50 if item_currency != currency: 51 raise ValueError( 52 "Different currencies in payment items not supported.") 53 result.append((descr, '%s %0.2f' % (item_currency, amount))) 54 result.append((_('Total'), '%s %0.2f' % (currency, total))) 55 return result 34 56 35 57 -
main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/payments/tests/test_payment.py
r12671 r12696 28 28 ) 29 29 from waeup.ikoba.payments.payment import ( 30 Payment, get_payment_providers, PaymentItem, 30 Payment, get_payment_providers, PaymentItem, format_payment_item_values, 31 31 ) 32 32 from waeup.ikoba.testing import (FunctionalLayer, FunctionalTestCase) … … 61 61 assert result['some_name'] is fake_util 62 62 63 def test_format_payment_item_values(self): 64 # we can format lists of payment item values 65 result = format_payment_item_values( 66 [(u'Item 1', 'USD', decimal.Decimal("12.123")), 67 (u'Item 2', 'USD', decimal.Decimal("12.002")), 68 ], 'USD') 69 self.assertEqual( 70 result, [(u'Item 1', 'USD 12.12'), 71 (u'Item 2', 'USD 12.00'), 72 (u'Total', 'USD 24.12')] 73 ) 74 75 def test_format_payment_item_values_req_single_currency(self): 76 # we require one currency for all items, yet. 77 self.assertRaises( 78 ValueError, format_payment_item_values, 79 [(u'Item 1', 'USD', decimal.Decimal("12.12")), 80 (u'Item 2', 'EUR', decimal.Decimal("50")), 81 ], 82 'USD') 83 63 84 64 85 class FunctionalHelperTests(FunctionalTestCase):
Note: See TracChangeset for help on using the changeset viewer.