rename days_ago to midnight_n_days_ago

also add some more timezone boundary tests and minor code cleanup
This commit is contained in:
Leo Hemsted
2018-04-30 11:50:56 +01:00
parent 310b8eda4c
commit 0efa223fb2
6 changed files with 54 additions and 25 deletions

View File

@@ -72,6 +72,7 @@ def test_last_template_usage_should_be_able_to_get_no_template_usage_history_if_
assert not results
@freeze_time('2018-01-01')
def test_should_by_able_to_get_template_count(sample_template, sample_email_template):
create_notification(sample_template)
create_notification(sample_template)
@@ -80,15 +81,16 @@ def test_should_by_able_to_get_template_count(sample_template, sample_email_temp
create_notification(sample_email_template)
results = dao_get_template_usage(sample_template.service_id, date.today())
assert results[0].name == 'Email Template Name'
assert results[0].template_type == 'email'
assert results[0].name == sample_email_template.name
assert results[0].template_type == sample_email_template.template_type
assert results[0].count == 2
assert results[1].name == 'Template Name'
assert results[1].template_type == 'sms'
assert results[1].name == sample_template.name
assert results[1].template_type == sample_template.template_type
assert results[1].count == 3
@freeze_time('2018-01-01')
def test_template_usage_should_ignore_test_keys(
sample_team_api_key,
sample_test_api_key,
@@ -102,8 +104,8 @@ def test_template_usage_should_ignore_test_keys(
create_notification(sample_template)
results = dao_get_template_usage(sample_template.service_id, date.today())
assert results[0].name == 'Template Name'
assert results[0].template_type == 'sms'
assert results[0].name == sample_template.name
assert results[0].template_type == sample_template.template_type
assert results[0].count == 3
@@ -148,7 +150,6 @@ def test_template_usage_should_by_able_to_get_zero_count_from_notifications_hist
assert len(results) == 0
@freeze_time('2017-06-10T12:00:00')
def test_template_usage_should_by_able_to_get_template_count_for_specific_day(sample_template):
# too early
create_notification(sample_template, created_at=datetime(2017, 6, 7, 22, 59, 0))
@@ -165,3 +166,21 @@ def test_template_usage_should_by_able_to_get_template_count_for_specific_day(sa
assert len(results) == 1
assert results[0].count == 5
def test_template_usage_should_by_able_to_get_template_count_for_specific_timezone_boundary(sample_template):
# too early
create_notification(sample_template, created_at=datetime(2018, 3, 24, 23, 59, 0))
# just right
create_notification(sample_template, created_at=datetime(2018, 3, 25, 0, 0, 0))
create_notification(sample_template, created_at=datetime(2018, 3, 25, 0, 0, 0))
create_notification(sample_template, created_at=datetime(2018, 3, 25, 22, 59, 0))
create_notification(sample_template, created_at=datetime(2018, 3, 25, 22, 59, 0))
create_notification(sample_template, created_at=datetime(2018, 3, 25, 22, 59, 0))
# too late
create_notification(sample_template, created_at=datetime(2018, 3, 25, 23, 0, 0))
results = dao_get_template_usage(sample_template.service_id, day=date(2018, 3, 25))
assert len(results) == 1
assert results[0].count == 5

View File

@@ -8,7 +8,7 @@ from app.utils import (
get_midnight_for_day_before,
convert_utc_to_bst,
convert_bst_to_utc,
days_ago,
midnight_n_days_ago,
last_n_days
)
@@ -51,22 +51,26 @@ def test_convert_bst_to_utc():
assert utc == datetime(2017, 5, 12, 12, 15)
@pytest.mark.parametrize('current_time, expected_datetime', [
@pytest.mark.parametrize('current_time, arg, expected_datetime', [
# winter
('2018-01-10 23:59', datetime(2018, 1, 9, 0, 0)),
('2018-01-11 00:00', datetime(2018, 1, 10, 0, 0)),
('2018-01-10 23:59', 1, datetime(2018, 1, 9, 0, 0)),
('2018-01-11 00:00', 1, datetime(2018, 1, 10, 0, 0)),
# bst switchover at 1am 25th
('2018-03-25 10:00', datetime(2018, 3, 24, 0, 0)),
('2018-03-26 10:00', datetime(2018, 3, 25, 0, 0)),
('2018-03-27 10:00', datetime(2018, 3, 25, 23, 0)),
('2018-03-25 10:00', 1, datetime(2018, 3, 24, 0, 0)),
('2018-03-26 10:00', 1, datetime(2018, 3, 25, 0, 0)),
('2018-03-27 10:00', 1, datetime(2018, 3, 25, 23, 0)),
# summer
('2018-06-05 10:00', datetime(2018, 6, 3, 23, 0))
('2018-06-05 10:00', 1, datetime(2018, 6, 3, 23, 0)),
# zero days ago
('2018-01-11 00:00', 0, datetime(2018, 1, 11, 0, 0)),
('2018-06-05 10:00', 0, datetime(2018, 6, 4, 23, 0)),
])
def test_days_ago(current_time, expected_datetime):
def test_midnight_n_days_ago(current_time, arg, expected_datetime):
with freeze_time(current_time):
assert days_ago(1) == expected_datetime
assert midnight_n_days_ago(arg) == expected_datetime
def test_last_n_days():
@@ -80,3 +84,8 @@ def test_last_n_days():
datetime(2018, 3, 26, 0, 0),
datetime(2018, 3, 27, 0, 0)
]
@pytest.mark.parametrize('arg', [0, -1])
def test_last_n_days_invalid_arg(arg):
assert last_n_days(arg) == []