Fix mocking

This commit is contained in:
shamoon 2024-10-31 09:05:28 -07:00
parent 06474e2781
commit d5c6ac801b
2 changed files with 35 additions and 40 deletions

View File

@ -56,6 +56,10 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
self.cf1 = CustomField.objects.create(name="cf1", data_type="string") self.cf1 = CustomField.objects.create(name="cf1", data_type="string")
self.cf2 = CustomField.objects.create(name="cf2", 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") @mock.patch("documents.bulk_edit.bulk_update_documents.delay")
def test_api_set_correspondent(self, bulk_update_task_mock): def test_api_set_correspondent(self, bulk_update_task_mock):
self.assertNotEqual(self.doc1.correspondent, self.c1) self.assertNotEqual(self.doc1.correspondent, self.c1)
@ -180,7 +184,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.serialisers.bulk_edit.modify_tags") @mock.patch("documents.serialisers.bulk_edit.modify_tags")
def test_api_modify_tags(self, m): def test_api_modify_tags(self, m):
m.return_value = "OK" self.setup_mock(m, "modify_tags")
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -213,7 +217,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
- API returns HTTP 400 - API returns HTTP 400
- modify_tags is not called - modify_tags is not called
""" """
m.return_value = "OK" self.setup_mock(m, "modify_tags")
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -232,7 +236,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.serialisers.bulk_edit.modify_custom_fields") @mock.patch("documents.serialisers.bulk_edit.modify_custom_fields")
def test_api_modify_custom_fields(self, m): def test_api_modify_custom_fields(self, m):
m.return_value = "OK" self.setup_mock(m, "modify_custom_fields")
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -265,8 +269,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
- API returns HTTP 400 - API returns HTTP 400
- modify_custom_fields is not called - modify_custom_fields is not called
""" """
m.return_value = "OK" self.setup_mock(m, "modify_custom_fields")
# Missing add_custom_fields # Missing add_custom_fields
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
@ -361,7 +364,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.serialisers.bulk_edit.delete") @mock.patch("documents.serialisers.bulk_edit.delete")
def test_api_delete(self, m): def test_api_delete(self, m):
m.return_value = "OK" self.setup_mock(m, "delete")
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -385,8 +388,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
THEN: THEN:
- set_storage_path is called with correct document IDs and storage_path ID - 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( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -416,8 +418,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
THEN: THEN:
- set_storage_path is called with correct document IDs and None storage_path - 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( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -730,7 +731,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.serialisers.bulk_edit.set_permissions") @mock.patch("documents.serialisers.bulk_edit.set_permissions")
def test_set_permissions(self, m): def test_set_permissions(self, m):
m.return_value = "OK" self.setup_mock(m, "set_permissions")
user1 = User.objects.create(username="user1") user1 = User.objects.create(username="user1")
user2 = User.objects.create(username="user2") user2 = User.objects.create(username="user2")
permissions = { permissions = {
@ -765,7 +766,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.serialisers.bulk_edit.set_permissions") @mock.patch("documents.serialisers.bulk_edit.set_permissions")
def test_set_permissions_merge(self, m): def test_set_permissions_merge(self, m):
m.return_value = "OK" self.setup_mock(m, "set_permissions")
user1 = User.objects.create(username="user1") user1 = User.objects.create(username="user1")
user2 = User.objects.create(username="user2") user2 = User.objects.create(username="user2")
permissions = { permissions = {
@ -825,7 +826,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
THEN: THEN:
- User is not able to change permissions - 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.owner = User.objects.get(username="temp_admin")
self.doc1.save() self.doc1.save()
user1 = User.objects.create(username="user1") user1 = User.objects.create(username="user1")
@ -877,7 +878,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
THEN: THEN:
- set_storage_path only called if user can edit all docs - 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.owner = User.objects.get(username="temp_admin")
self.doc1.save() self.doc1.save()
user1 = User.objects.create(username="user1") user1 = User.objects.create(username="user1")
@ -921,8 +922,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.serialisers.bulk_edit.rotate") @mock.patch("documents.serialisers.bulk_edit.rotate")
def test_rotate(self, m): def test_rotate(self, m):
m.return_value = "OK" self.setup_mock(m, "rotate")
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -976,8 +976,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.serialisers.bulk_edit.merge") @mock.patch("documents.serialisers.bulk_edit.merge")
def test_merge(self, m): def test_merge(self, m):
m.return_value = "OK" self.setup_mock(m, "merge")
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -1005,8 +1004,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
user1 = User.objects.create(username="user1") user1 = User.objects.create(username="user1")
self.client.force_authenticate(user=user1) self.client.force_authenticate(user=user1)
m.return_value = "OK" self.setup_mock(m, "merge")
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -1055,8 +1053,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
THEN: THEN:
- The API fails with a correct error code - The API fails with a correct error code
""" """
m.return_value = "OK" self.setup_mock(m, "merge")
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -1076,8 +1073,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.serialisers.bulk_edit.split") @mock.patch("documents.serialisers.bulk_edit.split")
def test_split(self, m): def test_split(self, m):
m.return_value = "OK" self.setup_mock(m, "split")
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(
@ -1167,8 +1163,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.serialisers.bulk_edit.delete_pages") @mock.patch("documents.serialisers.bulk_edit.delete_pages")
def test_delete_pages(self, m): def test_delete_pages(self, m):
m.return_value = "OK" self.setup_mock(m, "delete_pages")
response = self.client.post( response = self.client.post(
"/api/documents/bulk_edit/", "/api/documents/bulk_edit/",
json.dumps( json.dumps(

View File

@ -965,19 +965,19 @@ class SavedViewViewSet(ModelViewSet, PassUserMixin):
class BulkEditView(PassUserMixin): class BulkEditView(PassUserMixin):
MODIFIED_FIELD_BY_METHOD = { MODIFIED_FIELD_BY_METHOD = {
bulk_edit.set_correspondent: "correspondent", "set_correspondent": "correspondent",
bulk_edit.set_document_type: "document_type", "set_document_type": "document_type",
bulk_edit.set_storage_path: "storage_path", "set_storage_path": "storage_path",
bulk_edit.add_tag: "tags", "add_tag": "tags",
bulk_edit.remove_tag: "tags", "remove_tag": "tags",
bulk_edit.modify_tags: "tags", "modify_tags": "tags",
bulk_edit.modify_custom_fields: "custom_fields", "modify_custom_fields": "custom_fields",
bulk_edit.set_permissions: None, "set_permissions": None,
bulk_edit.delete: "deleted_at", "delete": "deleted_at",
bulk_edit.rotate: "checksum", "rotate": "checksum",
bulk_edit.delete_pages: "checksum", "delete_pages": "checksum",
bulk_edit.split: None, "split": None,
bulk_edit.merge: None, "merge": None,
} }
permission_classes = (IsAuthenticated,) permission_classes = (IsAuthenticated,)
@ -1032,7 +1032,7 @@ class BulkEditView(PassUserMixin):
return HttpResponseForbidden("Insufficient permissions") return HttpResponseForbidden("Insufficient permissions")
try: 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: if settings.AUDIT_LOG_ENABLED and modified_field:
old_documents = list( old_documents = list(
Document.objects.filter(pk__in=documents).values( Document.objects.filter(pk__in=documents).values(