From d5c6ac801b182f756b6277c86299fcd340ac176a Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 31 Oct 2024 09:05:28 -0700 Subject: [PATCH] Fix mocking --- src/documents/tests/test_api_bulk_edit.py | 47 ++++++++++------------- src/documents/views.py | 28 +++++++------- 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/src/documents/tests/test_api_bulk_edit.py b/src/documents/tests/test_api_bulk_edit.py index 88805aa84..075bbfd6a 100644 --- a/src/documents/tests/test_api_bulk_edit.py +++ b/src/documents/tests/test_api_bulk_edit.py @@ -56,6 +56,10 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.cf1 = CustomField.objects.create(name="cf1", data_type="string") self.cf2 = CustomField.objects.create(name="cf2", data_type="string") + def setup_mock(self, m, method_name, return_value="OK"): + m.return_value = return_value + m.__name__ = method_name + @mock.patch("documents.bulk_edit.bulk_update_documents.delay") def test_api_set_correspondent(self, bulk_update_task_mock): self.assertNotEqual(self.doc1.correspondent, self.c1) @@ -180,7 +184,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): @mock.patch("documents.serialisers.bulk_edit.modify_tags") def test_api_modify_tags(self, m): - m.return_value = "OK" + self.setup_mock(m, "modify_tags") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -213,7 +217,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): - API returns HTTP 400 - modify_tags is not called """ - m.return_value = "OK" + self.setup_mock(m, "modify_tags") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -232,7 +236,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): @mock.patch("documents.serialisers.bulk_edit.modify_custom_fields") def test_api_modify_custom_fields(self, m): - m.return_value = "OK" + self.setup_mock(m, "modify_custom_fields") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -265,8 +269,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): - API returns HTTP 400 - modify_custom_fields is not called """ - m.return_value = "OK" - + self.setup_mock(m, "modify_custom_fields") # Missing add_custom_fields response = self.client.post( "/api/documents/bulk_edit/", @@ -361,7 +364,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): @mock.patch("documents.serialisers.bulk_edit.delete") def test_api_delete(self, m): - m.return_value = "OK" + self.setup_mock(m, "delete") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -385,8 +388,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): THEN: - set_storage_path is called with correct document IDs and storage_path ID """ - m.return_value = "OK" - + self.setup_mock(m, "set_storage_path") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -416,8 +418,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): THEN: - set_storage_path is called with correct document IDs and None storage_path """ - m.return_value = "OK" - + self.setup_mock(m, "set_storage_path") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -730,7 +731,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): @mock.patch("documents.serialisers.bulk_edit.set_permissions") def test_set_permissions(self, m): - m.return_value = "OK" + self.setup_mock(m, "set_permissions") user1 = User.objects.create(username="user1") user2 = User.objects.create(username="user2") permissions = { @@ -765,7 +766,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): @mock.patch("documents.serialisers.bulk_edit.set_permissions") def test_set_permissions_merge(self, m): - m.return_value = "OK" + self.setup_mock(m, "set_permissions") user1 = User.objects.create(username="user1") user2 = User.objects.create(username="user2") permissions = { @@ -825,7 +826,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): THEN: - User is not able to change permissions """ - m.return_value = "OK" + self.setup_mock(m, "set_permissions") self.doc1.owner = User.objects.get(username="temp_admin") self.doc1.save() user1 = User.objects.create(username="user1") @@ -877,7 +878,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): THEN: - set_storage_path only called if user can edit all docs """ - m.return_value = "OK" + self.setup_mock(m, "set_storage_path") self.doc1.owner = User.objects.get(username="temp_admin") self.doc1.save() user1 = User.objects.create(username="user1") @@ -921,8 +922,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): @mock.patch("documents.serialisers.bulk_edit.rotate") def test_rotate(self, m): - m.return_value = "OK" - + self.setup_mock(m, "rotate") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -976,8 +976,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): @mock.patch("documents.serialisers.bulk_edit.merge") def test_merge(self, m): - m.return_value = "OK" - + self.setup_mock(m, "merge") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -1005,8 +1004,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): user1 = User.objects.create(username="user1") self.client.force_authenticate(user=user1) - m.return_value = "OK" - + self.setup_mock(m, "merge") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -1055,8 +1053,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): THEN: - The API fails with a correct error code """ - m.return_value = "OK" - + self.setup_mock(m, "merge") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -1076,8 +1073,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): @mock.patch("documents.serialisers.bulk_edit.split") def test_split(self, m): - m.return_value = "OK" - + self.setup_mock(m, "split") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -1167,8 +1163,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): @mock.patch("documents.serialisers.bulk_edit.delete_pages") def test_delete_pages(self, m): - m.return_value = "OK" - + self.setup_mock(m, "delete_pages") response = self.client.post( "/api/documents/bulk_edit/", json.dumps( diff --git a/src/documents/views.py b/src/documents/views.py index dbfb17e43..fe19174f8 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -965,19 +965,19 @@ class SavedViewViewSet(ModelViewSet, PassUserMixin): class BulkEditView(PassUserMixin): MODIFIED_FIELD_BY_METHOD = { - bulk_edit.set_correspondent: "correspondent", - bulk_edit.set_document_type: "document_type", - bulk_edit.set_storage_path: "storage_path", - bulk_edit.add_tag: "tags", - bulk_edit.remove_tag: "tags", - bulk_edit.modify_tags: "tags", - bulk_edit.modify_custom_fields: "custom_fields", - bulk_edit.set_permissions: None, - bulk_edit.delete: "deleted_at", - bulk_edit.rotate: "checksum", - bulk_edit.delete_pages: "checksum", - bulk_edit.split: None, - bulk_edit.merge: None, + "set_correspondent": "correspondent", + "set_document_type": "document_type", + "set_storage_path": "storage_path", + "add_tag": "tags", + "remove_tag": "tags", + "modify_tags": "tags", + "modify_custom_fields": "custom_fields", + "set_permissions": None, + "delete": "deleted_at", + "rotate": "checksum", + "delete_pages": "checksum", + "split": None, + "merge": None, } permission_classes = (IsAuthenticated,) @@ -1032,7 +1032,7 @@ class BulkEditView(PassUserMixin): return HttpResponseForbidden("Insufficient permissions") try: - modified_field = self.MODIFIED_FIELD_BY_METHOD[method] + modified_field = self.MODIFIED_FIELD_BY_METHOD[method.__name__] if settings.AUDIT_LOG_ENABLED and modified_field: old_documents = list( Document.objects.filter(pk__in=documents).values(