API: Add support for searching task by action
This allows users to query the API like so:
/api/v1/tasks?action=command
The search above would return tasks that used the "command" module.
Change-Id: I01226a9706a0004970cf7d6ef5d725998ae71827
This commit is contained in:
@@ -105,6 +105,7 @@ class TaskFilter(DateFilter):
|
||||
field_name="status", choices=ara_models.Task.STATUS, lookup_expr="iexact"
|
||||
)
|
||||
name = django_filters.CharFilter(field_name="name", lookup_expr="icontains")
|
||||
action = django_filters.CharFilter(field_name="action", lookup_expr="iexact")
|
||||
|
||||
# fmt: off
|
||||
order = django_filters.OrderingFilter(
|
||||
|
||||
@@ -220,3 +220,17 @@ class TaskTestCase(APITestCase):
|
||||
# Test multiple status
|
||||
request = self.client.get("/api/v1/tasks?status=running&status=completed")
|
||||
self.assertEqual(2, len(request.data["results"]))
|
||||
|
||||
def test_get_task_by_action(self):
|
||||
task = factories.TaskFactory(action="debug")
|
||||
factories.TaskFactory(action="setup")
|
||||
|
||||
# Confirm we have two objects
|
||||
request = self.client.get("/api/v1/tasks")
|
||||
self.assertEqual(2, len(request.data["results"]))
|
||||
|
||||
# Expect the correct single result when searching
|
||||
request = self.client.get("/api/v1/tasks?action=debug")
|
||||
self.assertEqual(1, len(request.data["results"]))
|
||||
self.assertEqual(task.id, request.data["results"][0]["id"])
|
||||
self.assertEqual(task.action, request.data["results"][0]["action"])
|
||||
|
||||
Reference in New Issue
Block a user