Index: /main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/payments/paypal_currencies.py
===================================================================
--- /main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/payments/paypal_currencies.py	(revision 12198)
+++ /main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/payments/paypal_currencies.py	(revision 12198)
@@ -0,0 +1,63 @@
+# $Id$
+#
+# Copyright (C) 2014 Uli Fouquet & Henrik Bettermann
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+from waeup.ikoba.interfaces import MessageFactory as _
+from waeup.ikoba.interfaces import SimpleIkobaVocabulary
+
+#: The currencies accepted by PayPal.
+#: The entries represent:
+#:   ( title (i18nized), domestic_only, decimals_allowed)
+#:
+#: If `domestic_only` is True, then this currency is supported as a
+#: payment currency and a currency balance for in-country PayPal
+#: accounts only.
+#:
+#: If `decimals_allowed` is *not* True, then you cannot pass amounts
+#: with decimals.
+#:
+#: Status of 2014-12-11
+CURRENCIES = {
+    'AUD': (_(u'Australian dollar'), False, True),
+    'BRL': (_(u'Brazilian real'), True, True),
+    'CAD': (_(u'Canadian dollar'), False, True),
+    'CHF': (_(u'Swiss franc'), False, True),
+    'CZK': (_(u'Czech koruna'), False, True),
+    'DKK': (_(u'Danish krone'), False, True),
+    'EUR': (_(u'Euro'), False, True),
+    'GBP': (_(u'Pound sterling'), False, True),
+    'HKD': (_(u'Hong Kong dollar'), False, True),
+    'HUF': (_(u'Hungarian forint'), False, True),
+    'ILS': (_(u'Israeli new shekel'), False, True),
+    'JPY': (_(u'Japanese yen'), False, False),
+    'MXN': (_(u'Mexican peso'), False, True),
+    'MYR': (_(u'Malaysian ringgit'), True, True),
+    'NOK': (_(u'Norwegian krone'), False, True),
+    'NZD': (_(u'New Zealand dollar'), False, True),
+    'PHP': (_(u'Philippine peso'), False, True),
+    'PLN': (_(u'Polish z\u0142oty'), False, True),
+    'SEK': (_(u'Swedish krona'), False, True),
+    'SGD': (_(u'Singapore dollar'), False, True),
+    'THB': (_(u'Thai baht'), False, True),
+    'TRY': (_(u'Turkish lira'), True, True),
+    'TWD': (_(u'New Taiwan dollar'), False, False),
+    'USD': (_(u'United States dollar'), False, True)
+    }
+
+
+#: A vocabulary of paypal supported currencies
+CURRENCIES_VOCAB = SimpleIkobaVocabulary(
+    *[(val[0], key) for key, val in CURRENCIES.items()])
Index: /main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/payments/tests/test_paypal_currencies.py
===================================================================
--- /main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/payments/tests/test_paypal_currencies.py	(revision 12198)
+++ /main/waeup.ikoba/branches/uli-payments/src/waeup/ikoba/payments/tests/test_paypal_currencies.py	(revision 12198)
@@ -0,0 +1,63 @@
+# $Id$
+#
+# Copyright (C) 2014 Uli Fouquet & Henrik Bettermann
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+import unittest
+from zope.i18nmessageid.message import Message as i18nMessage
+from zope.interface.verify import verifyObject
+from zope.schema.interfaces import IVocabularyTokenized, ITerm
+from waeup.ikoba.payments.paypal_currencies import (
+    CURRENCIES, CURRENCIES_VOCAB,
+    )
+
+
+class CurrencyTests(unittest.TestCase):
+
+    def test_currencies_is_dict(self):
+        # CURRENCIES is available
+        assert isinstance(CURRENCIES, dict)
+
+    def test_currencies_contains_i18n_messages(self):
+        # the CURRENCIES values are i18n messages
+        assert 'USD' in CURRENCIES.keys()
+        assert isinstance(CURRENCIES['USD'][0], i18nMessage)
+
+    def test_currencies_contain_domestic_infos(self):
+        # there is info about currencies valid domestic only avail.
+        CURRENCIES['USD'][1] is False
+        # there is info about whether the currency support decimals
+        CURRENCIES['USD'][2] is True
+
+
+class CurrenciesVocabTests(unittest.TestCase):
+
+    def test_currencies_vocab_tokenized(self):
+        # we can get a currencies source suitable for forms etc.
+        verifyObject(IVocabularyTokenized, CURRENCIES_VOCAB)
+
+    def test_currencies_vocab_i18nized(self):
+        # vocab titles are i18nized
+        result = CURRENCIES_VOCAB.getTerm('USD')
+        assert ITerm.providedBy(result)
+        self.assertEqual(result.title, u'United States dollar')
+        assert isinstance(result.title, i18nMessage)
+
+    def test_currencies_vocab_tokens_are_string(self):
+        # vocab tokens are simple strings
+        result = CURRENCIES_VOCAB.getTerm('USD')
+        assert ITerm.providedBy(result)
+        assert result.token == 'USD'
+        assert result.value == 'USD'
