Skip to content

Commit

Permalink
Make Incident.description editable
Browse files Browse the repository at this point in the history
  • Loading branch information
johannaengland committed Aug 19, 2024
1 parent c713faf commit 13b0fef
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 2 deletions.
1 change: 1 addition & 0 deletions changelog.d/811.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Make description editable
11 changes: 10 additions & 1 deletion src/argus/incident/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,15 @@ def validate(self, attrs: dict):


class IncidentPureDeserializer(serializers.ModelSerializer):
EDITABLE_FIELDS = set(["ticket_url", "details_url", "level", "metadata"])
EDITABLE_FIELDS = set(
[
"ticket_url",
"details_url",
"level",
"metadata",
"description",
]
)

tags = IncidentTagRelationSerializer(many=True, write_only=True)

Expand All @@ -184,6 +192,7 @@ class Meta:
"ticket_url",
"level",
"metadata",
"description",
]

def update(self, instance: Incident, validated_data: dict):
Expand Down
23 changes: 22 additions & 1 deletion tests/incident/test_change_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ def setUp(self):
super().init_test_objects()

self.url = "http://www.example.com/repository/issues/issue"
self.incident = StatefulIncidentFactory(level=1, ticket_url=self.url, details_url=self.url)
self.incident = StatefulIncidentFactory(
level=1,
ticket_url=self.url,
details_url=self.url,
description="old_description",
)

def teardown(self):
connect_signals()
Expand Down Expand Up @@ -146,3 +151,19 @@ def test_change_event_is_created_on_metadata_changes(self):
self.assertTrue(change_events)
self.assertIn(description, change_events_descriptions)
self.assertEqual(change_events.get(description=description).actor, self.user1)

def test_change_event_is_created_on_description_changes(self):
data = {
"description": "new_description",
}
description = ChangeEvent.format_description("description", "old_description", "new_description")
response = self.user1_rest_client.patch(
path=f"/api/v2/incidents/{self.incident.pk}/",
data=data,
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
change_events = self.incident.events.filter(type=Event.Type.INCIDENT_CHANGE)
change_events_descriptions = [event.description for event in change_events]
self.assertTrue(change_events)
self.assertIn(description, change_events_descriptions)
self.assertEqual(change_events.get(description=description).actor, self.user1)
24 changes: 24 additions & 0 deletions tests/incident/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,18 @@ def test_can_update_incident_level(self):
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(Incident.objects.get(pk=incident_pk).level, 2)

def test_can_update_incident_description(self):
incident_pk = self.add_open_incident_with_start_event_and_tag().pk
incident_path = reverse("v1:incident:incident-detail", args=[incident_pk])
response = self.client.patch(
path=incident_path,
data={
"description": "new description",
},
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(Incident.objects.get(pk=incident_pk).description, "new description")

def test_can_get_all_acknowledgements_of_incident(self):
ack = self.add_acknowledgement_with_incident_and_event()
incident = ack.event.incident
Expand Down Expand Up @@ -649,6 +661,18 @@ def test_can_update_incident_metadata(self):
self.assertNotEqual(changed_incident.metadata, start_metadata)
self.assertEqual(changed_incident.metadata, changed_metadata)

def test_can_update_incident_description(self):
incident_pk = self.add_open_incident_with_start_event_and_tag().pk
incident_path = reverse("v2:incident:incident-detail", args=[incident_pk])
response = self.client.patch(
path=incident_path,
data={
"description": "new description",
},
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(Incident.objects.get(pk=incident_pk).description, "new description")

def test_can_get_all_acknowledgements_of_incident(self):
ack = self.add_acknowledgement_with_incident_and_event()
incident = ack.event.incident
Expand Down

0 comments on commit 13b0fef

Please sign in to comment.