mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Some testing
[ci skip]
This commit is contained in:
		
							
								
								
									
										92
									
								
								src/documents/tests/test_tag_hierarchy.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								src/documents/tests/test_tag_hierarchy.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | |||||||
|  | from django.contrib.auth.models import User | ||||||
|  | from rest_framework.test import APITestCase | ||||||
|  |  | ||||||
|  | from documents import bulk_edit | ||||||
|  | from documents.models import Document | ||||||
|  | from documents.models import Tag | ||||||
|  | from documents.models import Workflow | ||||||
|  | from documents.models import WorkflowAction | ||||||
|  | from documents.models import WorkflowTrigger | ||||||
|  | from documents.signals.handlers import run_workflows | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestTagHierarchy(APITestCase): | ||||||
|  |     def setUp(self): | ||||||
|  |         self.user = User.objects.create_superuser(username="admin") | ||||||
|  |         self.client.force_authenticate(user=self.user) | ||||||
|  |  | ||||||
|  |         self.parent = Tag.objects.create(name="Parent") | ||||||
|  |         self.child = Tag.objects.create(name="Child", parent=self.parent) | ||||||
|  |  | ||||||
|  |         self.document = Document.objects.create( | ||||||
|  |             title="doc", | ||||||
|  |             content="", | ||||||
|  |             checksum="1", | ||||||
|  |             mime_type="application/pdf", | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |     def test_api_add_child_adds_parent(self): | ||||||
|  |         self.client.patch( | ||||||
|  |             f"/api/documents/{self.document.pk}/", | ||||||
|  |             {"tags": [self.child.pk]}, | ||||||
|  |             format="json", | ||||||
|  |         ) | ||||||
|  |         self.document.refresh_from_db() | ||||||
|  |         tags = set(self.document.tags.values_list("pk", flat=True)) | ||||||
|  |         assert tags == {self.parent.pk, self.child.pk} | ||||||
|  |  | ||||||
|  |     def test_api_remove_parent_removes_child(self): | ||||||
|  |         self.document.add_nested_tags([self.child]) | ||||||
|  |         self.client.patch( | ||||||
|  |             f"/api/documents/{self.document.pk}/", | ||||||
|  |             {"tags": []}, | ||||||
|  |             format="json", | ||||||
|  |         ) | ||||||
|  |         self.document.refresh_from_db() | ||||||
|  |         assert self.document.tags.count() == 0 | ||||||
|  |  | ||||||
|  |     def test_bulk_edit_respects_hierarchy(self): | ||||||
|  |         bulk_edit.add_tag([self.document.pk], self.child.pk) | ||||||
|  |         self.document.refresh_from_db() | ||||||
|  |         tags = set(self.document.tags.values_list("pk", flat=True)) | ||||||
|  |         assert tags == {self.parent.pk, self.child.pk} | ||||||
|  |  | ||||||
|  |         bulk_edit.remove_tag([self.document.pk], self.parent.pk) | ||||||
|  |         self.document.refresh_from_db() | ||||||
|  |         assert self.document.tags.count() == 0 | ||||||
|  |  | ||||||
|  |         bulk_edit.modify_tags([self.document.pk], [self.child.pk], []) | ||||||
|  |         self.document.refresh_from_db() | ||||||
|  |         tags = set(self.document.tags.values_list("pk", flat=True)) | ||||||
|  |         assert tags == {self.parent.pk, self.child.pk} | ||||||
|  |  | ||||||
|  |         bulk_edit.modify_tags([self.document.pk], [], [self.parent.pk]) | ||||||
|  |         self.document.refresh_from_db() | ||||||
|  |         assert self.document.tags.count() == 0 | ||||||
|  |  | ||||||
|  |     def test_workflow_actions(self): | ||||||
|  |         workflow = Workflow.objects.create(name="wf", order=0) | ||||||
|  |         trigger = WorkflowTrigger.objects.create( | ||||||
|  |             type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, | ||||||
|  |         ) | ||||||
|  |         assign_action = WorkflowAction.objects.create() | ||||||
|  |         assign_action.assign_tags.add(self.child) | ||||||
|  |         workflow.triggers.add(trigger) | ||||||
|  |         workflow.actions.add(assign_action) | ||||||
|  |  | ||||||
|  |         run_workflows(trigger.type, self.document) | ||||||
|  |         self.document.refresh_from_db() | ||||||
|  |         tags = set(self.document.tags.values_list("pk", flat=True)) | ||||||
|  |         assert tags == {self.parent.pk, self.child.pk} | ||||||
|  |  | ||||||
|  |         # removal | ||||||
|  |         removal_action = WorkflowAction.objects.create( | ||||||
|  |             type=WorkflowAction.WorkflowActionType.REMOVAL, | ||||||
|  |         ) | ||||||
|  |         removal_action.remove_tags.add(self.parent) | ||||||
|  |         workflow.actions.clear() | ||||||
|  |         workflow.actions.add(removal_action) | ||||||
|  |  | ||||||
|  |         run_workflows(trigger.type, self.document) | ||||||
|  |         self.document.refresh_from_db() | ||||||
|  |         assert self.document.tags.count() == 0 | ||||||
		Reference in New Issue
	
	Block a user
	 shamoon
					shamoon