mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-03-13 14:53:08 -04:00
Different emergencies will need broadcasts to last for a variable amount of time. We give users some control over this by letting them stop a broadcast early. But we should also let them set a maximum broadcast time, for: - when the duration of the danger is known - when the broadcast has been live long enough to alert everyone who needs to know about it This code re-uses the pattern for scheduling jobs, which has some constraints that are probably OK for now: - end time is limited to an hour - longest duration is 3 whole days (eg if you start broadcasting Friday you have the choice of Saturday, Sunday and all of Monday, up to midnight)
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
import pytest
|
|
from freezegun import freeze_time
|
|
|
|
from app.main.forms import ChooseTimeForm
|
|
|
|
|
|
@freeze_time("2016-01-01 11:09:00.061258")
|
|
def test_form_contains_next_24h(app_):
|
|
|
|
choices = ChooseTimeForm().scheduled_for.choices
|
|
|
|
# Friday
|
|
assert choices[0] == ('', 'Now')
|
|
assert choices[1] == ('2016-01-01T12:00:00', 'Today at midday')
|
|
assert choices[13] == ('2016-01-02T00:00:00', 'Today at midnight')
|
|
|
|
# Saturday
|
|
assert choices[14] == ('2016-01-02T01:00:00', 'Tomorrow at 1am')
|
|
assert choices[37] == ('2016-01-03T00:00:00', 'Tomorrow at midnight')
|
|
|
|
# Sunday
|
|
assert choices[38] == ('2016-01-03T01:00:00', 'Sunday at 1am')
|
|
|
|
# Monday
|
|
assert choices[84] == ('2016-01-04T23:00:00', 'Monday at 11pm')
|
|
assert choices[85] == ('2016-01-05T00:00:00', 'Monday at midnight')
|
|
|
|
with pytest.raises(IndexError):
|
|
assert choices[
|
|
12 + # hours left in the day
|
|
(3 * 24) + # 3 days
|
|
2 # magic number
|
|
]
|
|
|
|
|
|
@freeze_time("2016-01-01 11:09:00.061258")
|
|
def test_form_defaults_to_now(app_):
|
|
assert ChooseTimeForm().scheduled_for.data == ''
|
|
|
|
|
|
@freeze_time("2016-01-01 11:09:00.061258")
|
|
def test_form_contains_next_three_days(app_):
|
|
assert ChooseTimeForm().scheduled_for.categories == [
|
|
'Later today', 'Tomorrow', 'Sunday', 'Monday'
|
|
]
|