Source code for valuta.tests.test_base

from copy import deepcopy
import unittest

from ..base import BaseCurrency, Registry
from ..currencies import TND, EUR, MRU, VND, UGX
from ..exceptions import ImproperlyConfigured
from ..utils import get_currency_choices_with_code

__author__ = "Artur Barseghyan"
__copyright__ = "2021 Artur Barseghyan"
__license__ = "GPL-2.0-only OR LGPL-2.1-or-later"
__all__ = ("TestBase",)


[docs]class TestBase(unittest.TestCase): """Base tests."""
[docs] def setUp(self) -> None: self.registry_backup = deepcopy(Registry.REGISTRY)
[docs] def tearDown(self) -> None: Registry.REGISTRY = self.registry_backup
[docs] def test_subclass(self): """Test subclass.""" class XYZ(BaseCurrency): """XYZ - Test currency.""" uid: str = "XYZ" rate: int = 100_000_000 self.assertIn(XYZ.uid, Registry.REGISTRY) self.assertEqual(XYZ.convert_to_currency_units(100_000_000), 1)
[docs] def test_subclass_no_rate(self): """Test subclass no `rate`.""" with self.assertRaises(ImproperlyConfigured): class CurrencyNoRate(BaseCurrency): uid: str = "XYZ"
[docs] def test_symbol(self): """Test symbol.""" self.assertEqual(Registry.get("EUR").symbol, "€")
[docs] def test_1(self): self.assertEqual(UGX.convert_to_currency_units(10), 10) self.assertEqual(UGX.convert_to_currency_units(1_000), 1_000)
[docs] def test_5(self): self.assertEqual(MRU.convert_to_currency_units(5), 1) self.assertEqual(MRU.convert_to_currency_units(1_000), 200)
[docs] def test_10(self): self.assertEqual(VND.convert_to_currency_units(10), 1) self.assertEqual(VND.convert_to_currency_units(1_000), 100)
[docs] def test_100(self): self.assertEqual(EUR.convert_to_currency_units(100), 1) self.assertEqual(EUR.convert_to_currency_units(1_000), 10)
[docs] def test_1000(self): self.assertEqual(TND.convert_to_currency_units(1_000), 1)
class TestRegistry(unittest.TestCase): """Test registry.""" def setUp(self) -> None: self.registry_backup = deepcopy(Registry.REGISTRY) def tearDown(self) -> None: Registry.REGISTRY = self.registry_backup def test_get_currency_choices(self): """Test Registry.reset.""" Registry.reset() choices = get_currency_choices_with_code() self.assertListEqual(choices, []) def test_registry_items(self): items = Registry.items() choices = get_currency_choices_with_code() self.assertEqual(len(items), len(choices))