def test_get_rates_for_daterange_returns_empty_list_if_year_is_before_earliest_rate( notify_db, notify_db_session): set_up_rate(notify_db, datetime(2010, 6, 30, 14, 00), 0.015) set_up_rate(notify_db, datetime(2011, 9, 1), 0.0175) start_date, end_date = get_financial_year(2008) rates = get_rates_for_daterange(start_date, end_date, SMS_TYPE) assert rates == []
def test_get_rates_for_daterange_early_rate(notify_db, notify_db_session): set_up_rate(notify_db, datetime(2015, 6, 1), 0.014) set_up_rate(notify_db, datetime(2016, 6, 1), 0.015) set_up_rate(notify_db, datetime(2016, 9, 1), 0.016) set_up_rate(notify_db, datetime(2017, 6, 1), 0.0175) start_date, end_date = get_financial_year(2016) rates = get_rates_for_daterange(start_date, end_date, SMS_TYPE) assert len(rates) == 3
def test_get_rates_for_daterange_in_the_future(notify_db, notify_db_session): set_up_rate(notify_db, datetime(2016, 4, 1), 0.015) set_up_rate(notify_db, datetime(2017, 6, 1), 0.0175) start_date, end_date = get_financial_year(2018) rates = get_rates_for_daterange(start_date, end_date, SMS_TYPE) assert datetime.strftime(rates[0].valid_from, '%Y-%m-%d %H:%M:%S') == "2017-06-01 00:00:00" assert rates[0].rate == 0.0175
def test_get_rates_for_daterange_edge_case(notify_db, notify_db_session): set_up_rate(notify_db, datetime(2010, 6, 30, 14, 00), 0.015) set_up_rate(notify_db, datetime(2011, 6, 30, 14, 00), 0.0175) start_date, end_date = get_financial_year(2010) rates = get_rates_for_daterange(start_date, end_date, SMS_TYPE) assert len(rates) == 1 assert datetime.strftime(rates[0].valid_from, '%Y-%m-%d %H:%M:%S') == "2010-06-30 14:00:00" assert rates[0].rate == 0.015
def test_get_rates_for_daterange(notify_db, notify_db_session): set_up_rate(notify_db, datetime(2016, 5, 18), 0.016) set_up_rate(notify_db, datetime(2017, 3, 31, 23), 0.0158) start_date, end_date = get_financial_year(2017) rates = get_rates_for_daterange(start_date, end_date, SMS_TYPE) assert len(rates) == 1 assert datetime.strftime(rates[0].valid_from, '%Y-%m-%d %H:%M:%S') == "2017-03-31 23:00:00" assert rates[0].rate == 0.0158
def test_get_rates_for_daterange_where_daterange_is_one_month_that_falls_between_rate_valid_from( notify_db, notify_db_session): set_up_rate(notify_db, datetime(2017, 1, 1), 0.175) set_up_rate(notify_db, datetime(2017, 3, 31), 0.123) start_date = datetime(2017, 2, 1, 00, 00, 00) end_date = datetime(2017, 2, 28, 23, 59, 59, 999999) rates = get_rates_for_daterange(start_date, end_date, SMS_TYPE) assert len(rates) == 1 assert datetime.strftime(rates[0].valid_from, '%Y-%m-%d %H:%M:%S') == "2017-01-01 00:00:00" assert rates[0].rate == 0.175
def test_get_rates_for_daterange_returns_correct_rates(notify_db, notify_db_session): set_up_rate(notify_db, datetime(2010, 6, 30, 14, 00), 0.015) set_up_rate(notify_db, datetime(2010, 12, 1), 0.016) set_up_rate(notify_db, datetime(2011, 8, 1), 0.0175) start_date, end_date = get_financial_year(2011) rates_2011 = get_rates_for_daterange(start_date, end_date, SMS_TYPE) assert len(rates_2011) == 2 assert datetime.strftime(rates_2011[0].valid_from, '%Y-%m-%d %H:%M:%S') == "2010-12-01 00:00:00" assert rates_2011[0].rate == 0.016 assert datetime.strftime(rates_2011[1].valid_from, '%Y-%m-%d %H:%M:%S') == "2011-08-01 00:00:00" assert rates_2011[1].rate == 0.0175
def test_get_rates_for_daterange_multiple_result_per_year( notify_db, notify_db_session): set_up_rate(notify_db, datetime(2010, 6, 30, 14, 00), 0.015) set_up_rate(notify_db, datetime(2010, 7, 18), 0.016) set_up_rate(notify_db, datetime(2011, 6, 30, 14, 00), 0.0158) start_date, end_date = get_financial_year(2010) rates = get_rates_for_daterange(start_date, end_date, SMS_TYPE) assert len(rates) == 2 assert datetime.strftime(rates[0].valid_from, '%Y-%m-%d %H:%M:%S') == "2010-06-30 14:00:00" assert rates[0].rate == 0.015 assert datetime.strftime(rates[1].valid_from, '%Y-%m-%d %H:%M:%S') == "2010-07-18 00:00:00" assert rates[1].rate == 0.016
def test_get_rates_for_daterange_returns_correct_rates(notify_db, notify_db_session): set_up_rate(notify_db, datetime(2016, 4, 1), 0.015) set_up_rate(notify_db, datetime(2016, 9, 1), 0.016) set_up_rate(notify_db, datetime(2017, 6, 1), 0.0175) start_date, end_date = get_financial_year(2017) rates_2017 = get_rates_for_daterange(start_date, end_date, SMS_TYPE) assert len(rates_2017) == 2 assert datetime.strftime(rates_2017[0].valid_from, '%Y-%m-%d %H:%M:%S') == "2016-09-01 00:00:00" assert rates_2017[0].rate == 0.016 assert datetime.strftime(rates_2017[1].valid_from, '%Y-%m-%d %H:%M:%S') == "2017-06-01 00:00:00" assert rates_2017[1].rate == 0.0175