def test_exchange_rate_weekend_date(USD_exchange_rates_mock):
    # set the date on a Sunday, expect fridays rate
    friday = date(2020, 5, 22)
    sunday = date(2020, 5, 24)
    er = ExchangeRate('USD', friday, sunday)
    expected_rate = er.get_rate(friday)
    assert er.get_rate(sunday) == expected_rate
def test_exchange_rate_ok_date(USD_exchange_rates_mock):
    # set the date on a Friday
    thursday = date(2020, 5, 21)
    friday = date(2020, 5, 22)
    er = ExchangeRate('USD', thursday, friday)
    assert er.get_rate(friday) == Decimal('1.3')
def test_get_rate_before_min_date_exception(USD_exchange_rates_mock):
    er = ExchangeRate('USD', date(2020, 5, 22), date(2020, 5, 25))
    with pytest.raises(ClickException) as excinfo:
        er.get_rate(date(2017, 1, 2))
    assert excinfo.value.message == "Unable to find exchange rate on 2017-01-02"  # noqa: E501
def test_cad_to_cad_rate_is_1():
    day = date(2020, 5, 22)
    er = ExchangeRate('CAD', day, day)
    assert er.get_rate(day) == 1
def test_exchange_rate_noon_and_indicative(USD_exchange_rates_mock):
    noon_rate_date = date(2016, 5, 21)
    indicative_rate_date = date(2020, 5, 22)
    er = ExchangeRate('USD', noon_rate_date, indicative_rate_date)
    assert er.get_rate(noon_rate_date) == Decimal('1.1')
    assert er.get_rate(indicative_rate_date) == Decimal('1.3')
def test_exchange_rate_noon_only(USD_exchange_rates_mock):
    noon_rate_date = date(2016, 5, 21)
    er = ExchangeRate('USD', noon_rate_date, noon_rate_date)
    expected_rate = er.get_rate(noon_rate_date)
    assert expected_rate == Decimal('1.1')