1- import time
21from datetime import datetime , timedelta
32from django .utils import timezone
3+ from unittest .mock import patch
44from django .conf import settings
55from modeltranslation .utils import build_localized_fieldname
66
@@ -140,6 +140,63 @@ def _to_csv(*items):
140140 ))
141141 self .assertEqual (response ['count' ], 2 )
142142
143+ def test_surge_alert_status (self ):
144+ region_1 , region_2 = RegionFactory .create_batch (2 )
145+ country_1 = CountryFactory .create (iso3 = 'ATL' , region = region_1 )
146+ country_2 = CountryFactory .create (iso3 = 'NPT' , region = region_2 )
147+
148+ molnix_tag_1 = MolnixTagFactory .create (name = 'OP-6700' )
149+ molnix_tag_2 = MolnixTagFactory .create (name = 'L-FRA' )
150+ molnix_tag_3 = MolnixTagFactory .create (name = 'AMER' )
151+
152+ alert1 = SurgeAlertFactory .create (
153+ message = 'CEA Coordinator, Floods, Atlantis' ,
154+ country = country_1 ,
155+ molnix_tags = [molnix_tag_1 , molnix_tag_2 ],
156+ opens = timezone .now () - timedelta (days = 2 ),
157+ closes = timezone .now () + timedelta (days = 5 )
158+ )
159+ alert2 = SurgeAlertFactory .create (
160+ message = 'WASH Coordinator, Earthquake, Neptunus' ,
161+ country = country_2 ,
162+ molnix_tags = [molnix_tag_1 , molnix_tag_3 ],
163+ opens = timezone .now () - timedelta (days = 2 ),
164+ closes = timezone .now () - timedelta (days = 1 )
165+ )
166+ alert3 = SurgeAlertFactory .create (
167+ message = 'New One' ,
168+ country = country_2 ,
169+ molnix_tags = [molnix_tag_1 , molnix_tag_3 ],
170+ molnix_status = 'unfilled' ,
171+ )
172+
173+ self .assertEqual (alert1 .status , SurgeAlertStatus .OPEN )
174+ self .assertEqual (alert2 .status , SurgeAlertStatus .CLOSED )
175+ self .assertEqual (alert3 .status , SurgeAlertStatus .STOOD_DOWN )
176+
177+ def _fetch (filters ):
178+ return self .client .get ('/api/v2/surge_alert/' , filters ).json ()
179+
180+ response = _fetch (dict ({
181+ 'status' : SurgeAlertStatus .OPEN
182+ }))
183+
184+ self .assertEqual (response ['count' ], 1 )
185+ self .assertEqual (response ['results' ][0 ]['status' ], SurgeAlertStatus .OPEN )
186+
187+ response = _fetch (dict ({
188+ 'status' : SurgeAlertStatus .CLOSED
189+ }))
190+ self .assertEqual (response ['count' ], 1 )
191+ self .assertEqual (response ['results' ][0 ]['status' ], SurgeAlertStatus .CLOSED )
192+
193+ response = _fetch (dict ({
194+ 'status' : SurgeAlertStatus .STOOD_DOWN
195+ }))
196+ self .assertEqual (response ['count' ], 1 )
197+ self .assertEqual (response ['results' ][0 ]['status' ], SurgeAlertStatus .STOOD_DOWN )
198+
199+
143200class SurgeAlertTestCase (APITestCase ):
144201 def test_update_alert_status_command (self ):
145202 region_1 , region_2 = RegionFactory .create_batch (2 )
@@ -154,25 +211,25 @@ def test_update_alert_status_command(self):
154211 message = 'CEA Coordinator, Floods, Atlantis' ,
155212 country = country_1 ,
156213 molnix_tags = [molnix_tag_1 , molnix_tag_2 ],
157- opens = timezone .now () - timedelta (days = 2 ),
158- closes = timezone .now () + timedelta (seconds = 5 )
214+ opens = timezone .now () - timedelta (days = 2 ),
215+ closes = timezone .now () + timedelta (seconds = 5 )
159216 )
160217 alert2 = SurgeAlertFactory .create (
161218 message = 'WASH Coordinator, Earthquake, Neptunus' ,
162219 country = country_2 ,
163220 molnix_tags = [molnix_tag_1 , molnix_tag_3 ],
164- opens = timezone .now () - timedelta (days = 2 ),
165- closes = timezone .now () - timedelta (days = 1 )
166-
221+ opens = timezone .now () - timedelta (days = 2 ),
222+ closes = timezone .now () - timedelta (days = 1 )
167223 )
168224 self .assertEqual (alert1 .status , SurgeAlertStatus .OPEN )
169225 self .assertEqual (alert2 .status , SurgeAlertStatus .CLOSED )
170226
171- time .sleep (10 )
172- call_command ('update_alert_status' )
227+ with patch ('django.utils.timezone.now' ) as mock_now :
228+ mock_now .return_value = datetime .now () + timedelta (days = 1 )
229+ call_command ('update_surge_alert_status' )
173230
174231 alert1 .refresh_from_db ()
175232 alert2 .refresh_from_db ()
176233
177234 self .assertEqual (alert1 .status , SurgeAlertStatus .CLOSED )
178- self .assertEqual (alert2 .status , SurgeAlertStatus .CLOSED )
235+ self .assertEqual (alert2 .status , SurgeAlertStatus .CLOSED )
0 commit comments