def test_rates_are_updated(set_up, custom_data, mocker):
    backend = OpenExchangeBackend()
    urlopen_mock = mocker.patch("djmoney_rates.backends.urlopen")

    instance = urlopen_mock.return_value
    instance.read.return_value = custom_data[0]
    backend.update_rates()

    first_update = RateSource.objects.get(
        name=backend.get_source_name()).last_update
    assert 8 == Rate.objects.filter(
        source__name=backend.get_source_name()).count()
    assert Decimal("3.672626") == Rate.objects.get(currency="AED").value

    # change return value for mocked urlopen read call
    instance.read.return_value = custom_data[1]

    # call update rates again
    backend.update_rates()

    last_update = RateSource.objects.get(
        name=backend.get_source_name()).last_update

    assert 8 == Rate.objects.filter(
        source__name=backend.get_source_name()).count()
    assert last_update > first_update
    assert Decimal("4.672626") == Rate.objects.get(currency="AED").value
    def test_rates_are_updated(self, urlopen_mock):
        backend = OpenExchangeBackend()

        instance = urlopen_mock.return_value
        instance.read.return_value = self.test_data_1
        backend.update_rates()

        first_update = RateSource.objects.get(
            name=backend.get_source_name()).last_update
        self.assertEqual(
            8,
            Rate.objects.filter(
                source__name=backend.get_source_name()).count())
        self.assertEqual(Decimal("3.672626"),
                         Rate.objects.get(currency="AED").value)

        # change return value for mocked urlopen read call
        instance.read.return_value = self.test_data_2

        # call update rates again
        backend.update_rates()

        last_update = RateSource.objects.get(
            name=backend.get_source_name()).last_update

        self.assertEqual(
            8,
            Rate.objects.filter(
                source__name=backend.get_source_name()).count())
        self.assertTrue(last_update > first_update)
        self.assertEqual(Decimal("4.672626"),
                         Rate.objects.get(currency="AED").value)
    def test_rates_are_saved(self, urlopen_mock):
        backend = OpenExchangeBackend()

        instance = urlopen_mock.return_value
        instance.read.return_value = self.test_data_1
        backend.update_rates()

        self.assertEqual(8, Rate.objects.filter(source__name=backend.get_source_name()).count())
def test_rates_are_saved(set_up, custom_data, mocker):
    backend = OpenExchangeBackend()
    urlopen_mock = mocker.patch("djmoney_rates.backends.urlopen")

    instance = urlopen_mock.return_value
    instance.read.return_value = custom_data[0]
    backend.update_rates()

    assert 8 == Rate.objects.filter(source__name=backend.get_source_name()).count()
    def test_rates_are_saved(self, urlopen_mock):
        backend = OpenExchangeBackend()

        instance = urlopen_mock.return_value
        instance.read.return_value = self.test_data_1
        backend.update_rates()

        self.assertEqual(
            8,
            Rate.objects.filter(
                source__name=backend.get_source_name()).count())
def test_missing_app_id(set_up):
    money_rates_settings.OPENEXCHANGE_APP_ID = ""

    with pytest.raises(ImproperlyConfigured) as exc:
        OpenExchangeBackend()

    assert "OPENEXCHANGE_APP_ID setting should not be empty when using OpenExchangeBackend" in str(exc.value)
    def test_rates_are_updated(self, urlopen_mock):
        backend = OpenExchangeBackend()

        instance = urlopen_mock.return_value
        instance.read.return_value = self.test_data_1
        backend.update_rates()

        first_update = RateSource.objects.get(name=backend.get_source_name()).last_update
        self.assertEqual(8, Rate.objects.filter(source__name=backend.get_source_name()).count())
        self.assertEqual(Decimal("3.672626"), Rate.objects.get(currency="AED").value)

        # change return value for mocked urlopen read call
        instance.read.return_value = self.test_data_2

        # call update rates again
        backend.update_rates()

        last_update = RateSource.objects.get(name=backend.get_source_name()).last_update

        self.assertEqual(8, Rate.objects.filter(source__name=backend.get_source_name()).count())
        self.assertTrue(last_update > first_update)
        self.assertEqual(Decimal("4.672626"), Rate.objects.get(currency="AED").value)
def test_url_is_correct(set_up):
    backend = OpenExchangeBackend()
    assert backend.url == "http://openexchangerates.org/api/latest.json?app_id=fake-app-id&base=USD"
 def test_url_is_correct(self):
     backend = OpenExchangeBackend()
     self.assertEqual(
         backend.url,
         "http://openexchangerates.org/api/latest.json?app_id=fake-app-id&base=USD"
     )