diff --git a/djmoney_rates/management/commands/update_rates.py b/djmoney_rates/management/commands/update_rates.py index 48f94a6..47d41b8 100644 --- a/djmoney_rates/management/commands/update_rates.py +++ b/djmoney_rates/management/commands/update_rates.py @@ -12,9 +12,9 @@ class Command(BaseCommand): def handle(self, *args, **options): if args: try: - backend_class = import_from_string(args, "") + backend_class = import_from_string(args[0], "") except ImportError: - raise CommandError("Cannot find custom backend %s. Is it correct" % args) + raise CommandError("Cannot find custom backend %s. Is it correct" % args[0]) else: backend_class = money_rates_settings.DEFAULT_BACKEND diff --git a/tests/test_commands.py b/tests/test_commands.py new file mode 100644 index 0000000..92641c0 --- /dev/null +++ b/tests/test_commands.py @@ -0,0 +1,29 @@ +from __future__ import unicode_literals + +import unittest + +from django.core.management import call_command +from django.core.management.base import CommandError + +from djmoney_rates.backends import BaseRateBackend +from djmoney_rates.models import Rate, RateSource + + +class CustomBackend(BaseRateBackend): + source_name = "custom-backend" + base_currency = "USD" + + def get_rates(self): + return {"PLN": 3.07, "EUR": 0.74} + + +class TestCommands(unittest.TestCase): + def test_fail_when_custom_backend_do_not_exists(self): + with self.assertRaises(CommandError): + call_command("update_rates", "fake.custom.Backend") + + def test_custom_backend_used_when_specified(self): + call_command("update_rates", "tests.test_commands.CustomBackend") + + self.assertEqual(1, RateSource.objects.filter(name="custom-backend").count()) + self.assertEqual(2, Rate.objects.filter(source__name="custom-backend").count())