Skip to content
41 changes: 19 additions & 22 deletions tests/incident/test_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,18 @@ def _assert_posting_event_succeeds(self, post_data: dict, client: Client):
self.assertTrue(self.stateful_incident1.events.filter(pk=response.data["pk"]).exists())
self.assertEqual(response.data["incident"], self.stateful_incident1.pk)

def _assert_incident_is_closed_at_timestamp(self, end_event_timestamp):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be cleaner to have the incident as a parameter as well instead of assuming it is self.stateful_incident1.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

self.stateful_incident1.refresh_from_db()
self.assertFalse(self.stateful_incident1.open)
set_end_time = self.stateful_incident1.end_time
self.assertEqual(set_end_time, end_event_timestamp)

def _assert_incident_is_open(self):
self.stateful_incident1.refresh_from_db()
self.assertTrue(self.stateful_incident1.open)
set_end_time = self.stateful_incident1.end_time
self.assertEqual(datetime_utils.make_naive(set_end_time), datetime.max)

def test_posting_close_and_reopen_events_properly_changes_stateful_incidents(self):
self.assertTrue(self.stateful_incident1.stateful)
self.assertTrue(self.stateful_incident1.open)
Expand All @@ -81,28 +93,22 @@ def test_posting_close_and_reopen_events_properly_changes_stateful_incidents(sel
event_timestamp = close_event_dict["timestamp"]
response = self.user1_rest_client.post(self.events_url(self.stateful_incident1), close_event_dict)
self.assertEqual(parse_datetime(response.data["timestamp"]), event_timestamp)
self.stateful_incident1.refresh_from_db()
self.assertFalse(self.stateful_incident1.open)
set_end_time = self.stateful_incident1.end_time
self.assertEqual(set_end_time, event_timestamp)
self._assert_incident_is_closed_at_timestamp(event_timestamp)

# It's illegal to close an already closed incident
self._assert_posting_event_is_rejected_and_does_not_change_end_time(
close_event_dict, set_end_time, self.user1_rest_client
close_event_dict, self.stateful_incident1.end_time, self.user1_rest_client
)

# Test reopening incident
reopen_event_dict = self._create_event_dict(Event.Type.REOPEN)
response = self.user1_rest_client.post(self.events_url(self.stateful_incident1), reopen_event_dict)
self.assertEqual(parse_datetime(response.data["timestamp"]), reopen_event_dict["timestamp"])
self.stateful_incident1.refresh_from_db()
self.assertTrue(self.stateful_incident1.open)
set_end_time = self.stateful_incident1.end_time
self.assertEqual(datetime_utils.make_naive(set_end_time), datetime.max)
self._assert_incident_is_open()

# It's illegal to reopen an already opened incident
self._assert_posting_event_is_rejected_and_does_not_change_end_time(
reopen_event_dict, set_end_time, self.user1_rest_client
reopen_event_dict, self.stateful_incident1.end_time, self.user1_rest_client
)

def test_posting_end_and_restart_events_properly_changes_stateful_incidents(self):
Expand All @@ -114,29 +120,20 @@ def test_posting_end_and_restart_events_properly_changes_stateful_incidents(self
event_timestamp = end_event_dict["timestamp"]
response = self.source1_rest_client.post(self.events_url(self.stateful_incident1), end_event_dict)
self.assertEqual(parse_datetime(response.data["timestamp"]), event_timestamp)
self.stateful_incident1.refresh_from_db()
self.assertFalse(self.stateful_incident1.open)
set_end_time = self.stateful_incident1.end_time
self.assertEqual(set_end_time, event_timestamp)
self._assert_incident_is_closed_at_timestamp(event_timestamp)

# Test restarting incident
reopen_event_dict = self._create_event_dict(Event.Type.INCIDENT_RESTART)
response = self.source1_rest_client.post(self.events_url(self.stateful_incident1), reopen_event_dict)
self.assertEqual(parse_datetime(response.data["timestamp"]), reopen_event_dict["timestamp"])
self.stateful_incident1.refresh_from_db()
self.assertTrue(self.stateful_incident1.open)
set_end_time = self.stateful_incident1.end_time
self.assertEqual(datetime_utils.make_naive(set_end_time), datetime.max)
self._assert_incident_is_open()

# Test ending again
end_event_dict = self._create_event_dict(Event.Type.INCIDENT_END)
event_timestamp = end_event_dict["timestamp"]
response = self.source1_rest_client.post(self.events_url(self.stateful_incident1), end_event_dict)
self.assertEqual(parse_datetime(response.data["timestamp"]), event_timestamp)
self.stateful_incident1.refresh_from_db()
self.assertFalse(self.stateful_incident1.open)
set_end_time = self.stateful_incident1.end_time
self.assertEqual(set_end_time, event_timestamp)
self._assert_incident_is_closed_at_timestamp(event_timestamp)

def test_posting_close_and_reopen_events_does_not_change_stateless_incidents(self):
def assert_incident_stateless():
Expand Down
Loading