diff --git a/atdb/taskdatabase/tests/test_views.py b/atdb/taskdatabase/tests/test_views.py
index a44a776bff3080bff519ba87baa170fecee94e3f..f0211a3d4a7fe65c6c06213f5570428b82ec5b5a 100644
--- a/atdb/taskdatabase/tests/test_views.py
+++ b/atdb/taskdatabase/tests/test_views.py
@@ -1,10 +1,14 @@
 from django.test import TestCase, RequestFactory
 from django.urls import reverse
-from django.http import HttpResponse
-from django.shortcuts import redirect
+
+from django.contrib.auth.models import User
+from django.contrib.sessions.middleware import SessionMiddleware
 
 from taskdatabase.models import Task, Workflow
-from taskdatabase.views import SortTasks
+from taskdatabase.views import SortTasks, TaskMultiStatus
+from taskdatabase.forms import DiscardAnnotationForm
+
+from unittest.mock import patch, MagicMock
 
 class TestViews(TestCase):
     def setUp(self):
@@ -15,22 +19,86 @@ class TestViews(TestCase):
         workflow_requantisation.save()
 
         # Create a test task
-        self.task1 = Task.objects.create(filter='a',sas_id=456, status='stored', workflow=workflow_requantisation, priority=1)
-        self.task2 = Task.objects.create(filter='b',sas_id=123, status='stored', workflow=workflow_requantisation, priority=1)
-
-    # def test_sort(self):
-    #     # Set up the URL for the view
-    #     #url = reverse('sort-tasks', kwargs={'sort': 'sas_id', 'redirect_to_page': 'atdb'})
-    #
-    #     # Create a request object
-    #     request = self.factory.get('/dummy-url')
-    #
-    #     # Call the function with sort='priority' and redirect_to_page='tasks_list'
-    #     response = SortTasks(request, sort='sas_id', redirect_to_page='atdb')
-    #
-    #     # Check if the sort field is correctly stored in the session
-    #     self.assertEqual(request.session['sort'], 'name')
-    #
-    #     # Check if it redirects to the 'index' page
-    #     self.assertEqual(response.status_code, 302)
-    #     self.assertEqual(response.url, reverse('atdb'))
\ No newline at end of file
+        self.task1 = Task.objects.create(sas_id=456, status='defined', workflow=workflow_requantisation)
+        self.task2 = Task.objects.create(sas_id=123, status='defined', workflow=workflow_requantisation)
+
+        self.user = User.objects.create_user(username='testuser', password='testpass')
+
+        self.session_data = {
+            'filtered_tasks_as_list': [self.task1.id, self.task2.id],
+            'current_query_params': 'status=defined'
+        }
+
+    def _set_up_session(self, request):
+        """Helper function to set up session for the request"""
+        middleware = SessionMiddleware(get_response=lambda r: None)
+        middleware.process_request(request)
+        request.session.update(self.session_data)
+        request.session.save()
+
+    def test_sort(self):
+        # Set up the URL for the view
+
+        # Arrange
+        # Create a request object
+        request = self.factory.get('/dummy-url')
+        self._set_up_session(request)
+
+        # Act
+        # Call the function with sort='priority' and redirect_to_page='tasks_list'
+        response = SortTasks(request, sort='sas_id', redirect_to_page='atdb')
+
+        # Assert
+        # Check if the sort field is correctly stored in the session
+        self.assertEqual(request.session['sort'], 'sas_id')
+
+        # Check if it redirects to the 'index' page
+        self.assertEqual(response.status_code, 302)
+        self.assertEqual(response.url, reverse('index'))
+
+    @patch('taskdatabase.views.Task.objects.get')
+    @patch('taskdatabase.views.DiscardAnnotationForm.is_valid')
+    def test_task_multi_status_post_discard(self, mock_is_valid, mock_get):
+
+        # Arrange
+        # Mock the Task.objects.get method to return mock tasks
+        mock_get.side_effect = lambda id: self.task1 if id == self.task1.id else self.task2
+        mock_is_valid.return_value = True
+
+        request = self.factory.post('/dummy-url', data={'annotation': 'test annotation'})
+        self._set_up_session(request)
+        request.user = self.user
+
+        # Act
+        # Call the function with new_status='discarded'
+        response = TaskMultiStatus(request, new_status='discarded', query_params='status=defined')
+
+        # Assert
+        # Check that the tasks were updated correctly
+        self.assertEqual(self.task1.status, 'discarded')
+        self.assertEqual(self.task2.status, 'discarded')
+        self.assertEqual(self.task1.remarks['discard_reason'], 'test annotation')
+        self.assertEqual(self.task2.remarks['discard_reason'], 'test annotation')
+
+        # Check if it redirects to the correct URL
+        self.assertEqual(response.status_code, 302)
+        self.assertEqual(response.url, reverse('query') + '?' + 'status=defined')
+
+    @patch('taskdatabase.views.convert_query_params_to_url')
+    def test_task_multi_status_get_discard(self,mock_query_params):
+
+        # Arrange
+        mock_query_params.return_value = "&status=defined"
+
+        request = self.factory.get('/dummy-url')
+        self._set_up_session(request)
+        request.user = self.user
+        expected_params_on_session = "&status=defined"
+
+        # Act
+        # Call the function with new_status='discarded'
+        response = TaskMultiStatus(request, new_status='discarded', query_params='status=defined')
+
+        # Assert
+        self.assertEqual(response.status_code, 200)
+        self.assertEqual(request.session['current_query_params'], expected_params_on_session)
\ No newline at end of file